From c8bf4659459e4870fa45dd0e0da1737e15963a0d Mon Sep 17 00:00:00 2001
From: loathingKernel <142770+loathingKernel@users.noreply.github.com>
Date: Thu, 5 Mar 2026 21:54:51 +0200
Subject: [PATCH 1/2] OverlaySettings: add a second form layout on the right to
split options into two columns
---
.../tabs/settings/widgets/overlay.py | 102 +++++++++---------
.../tabs/settings/widgets/overlay.py | 24 +++--
.../tabs/settings/widgets/overlay.ui | 26 ++---
3 files changed, 75 insertions(+), 77 deletions(-)
diff --git a/rare/components/tabs/settings/widgets/overlay.py b/rare/components/tabs/settings/widgets/overlay.py
index dc68dd49f7..0295aa8512 100644
--- a/rare/components/tabs/settings/widgets/overlay.py
+++ b/rare/components/tabs/settings/widgets/overlay.py
@@ -144,6 +144,7 @@ def __init__(self, parent=None):
self.force_disabled: Union[str, None] = None
self.force_defaults: Union[str, None] = None
self.separator: Union[str, None] = None
+ self.grid_row_items: Union[int, None] = None
self.app_name: str = "default"
self.option_widgets: List[Union[OverlayCheckBox, OverlayLineEdit, OverlayComboBox]] = []
@@ -158,35 +159,50 @@ def __init__(self, parent=None):
def setupWidget(
self,
grid_map: List[OverlayCheckBox],
- form_map: List[Tuple[Union[OverlayLineEdit, OverlayComboBox], str]],
+ left_form_map: List[Tuple[Union[OverlayLineEdit, OverlayComboBox], str]],
+ right_form_map: List[Tuple[Union[OverlayLineEdit, OverlayComboBox], str]],
label: str,
control_key: str,
config_key: str,
force_disabled: str,
force_defaults: str,
separator: str,
+ grid_row_items: int,
):
self.control_key = control_key
self.config_key = config_key
self.force_disabled = force_disabled
self.force_defaults = force_defaults
self.separator = separator
+ self.grid_row_items = grid_row_items
self.ui.overlay_state_label.setText(label)
for idx, widget in enumerate(grid_map):
widget.setParent(self.ui.options_group)
- self.ui.options_grid.addWidget(widget, idx // 4, idx % 4)
+ self.ui.options_grid.addWidget(widget, idx // self.grid_row_items, idx % self.grid_row_items)
# self.checkboxes[widget.option] = widget
self.option_widgets.append(widget)
widget.stateChanged.connect(self._update_settings)
+ self.ui.options_grid.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
- for widget, label in form_map:
+ for widget, label in left_form_map:
widget.setParent(self.ui.options_group)
- self.ui.options_form.addRow(label, widget)
+ self.ui.left_options_form.addRow(label, widget)
# self.values[widget.option] = widget
self.option_widgets.append(widget)
widget.valueChanged.connect(self._update_settings)
+ self.ui.left_options_form.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
+
+ for widget, label in right_form_map:
+ widget.setParent(self.ui.options_group)
+ self.ui.right_options_form.addRow(label, widget)
+ # self.values[widget.option] = widget
+ self.option_widgets.append(widget)
+ widget.valueChanged.connect(self._update_settings)
+ self.ui.right_options_form.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
+
+ self.ui.options_layout.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
@abstractmethod
def update_settings_override(self, state: ActivationStates):
@@ -282,19 +298,22 @@ def __init__(self, parent=None):
OverlayCheckBox("devinfo", self.tr("GPU driver and version")),
OverlayCheckBox("drawcalls", self.tr("Draw calls per frame")),
]
- form = [
+ left_form = [
(OverlayNumberInput("scale", 1.0), self.tr("Scale")),
(OverlayNumberInput("opacity", 1.0), self.tr("Opacity")),
]
+ right_form = []
self.setupWidget(
grid,
- form,
+ left_form,
+ right_form,
label=self.tr("Show HUD"),
control_key="DXVK_HUD",
config_key="DXVK_HUD",
force_disabled="0",
force_defaults="1",
separator=",",
+ grid_row_items=4,
)
def update_settings_override(self, state: ActivationStates):
@@ -306,54 +325,31 @@ def __init__(self, parent=None):
super(DxvkConfigSettings, self).__init__(parent=parent)
self.setTitle(self.tr("DXVK Config"))
dxvk_config_trinary = (("Auto", "Auto"), ("True", "True"), ("False", "False"))
+ # fmt: off
grid = []
- form = [
- (
- OverlayLineEdit(
- "dxvk.deviceFilter",
- "",
- ),
- "dxvk.deviceFilter",
- ),
- (
- OverlayNumberInput(
- "dxgi.syncInterval",
- -1,
- ),
- "dxgi.syncInterval",
- ),
- (
- OverlayNumberInput(
- "d3d9.presentInterval",
- -1,
- ),
- "d3d9.presentInterval",
- ),
- (
- OverlayNumberInput(
- "dxgi.maxFrameRate",
- 0,
- ),
- "dxgi.maxFrameRate",
- ),
- (
- OverlayNumberInput(
- "d3d9.maxFrameRate",
- 0,
- ),
- "d3d9.maxFrameRate",
- ),
+ left_form = [
+ (OverlayLineEdit("dxvk.deviceFilter", ""), "dxvk.deviceFilter"),
+ (OverlayNumberInput("dxvk.numCompilerThreads", 0), "dxvk.numCompilerThreads"),
(OverlaySelectInput("dxvk.tearFree", dxvk_config_trinary), "dxvk.tearFree"),
]
+ right_form = [
+ (OverlayNumberInput("dxgi.syncInterval", -1), "dxgi.syncInterval"),
+ (OverlayNumberInput("dxgi.maxFrameRate", 0), "dxgi.maxFrameRate"),
+ (OverlayNumberInput("d3d9.presentInterval", -1), "d3d9.presentInterval"),
+ (OverlayNumberInput("d3d9.maxFrameRate", 0), "d3d9.maxFrameRate"),
+ ]
+ # fmt: on
self.setupWidget(
grid,
- form,
+ left_form,
+ right_form,
label=self.tr("Mode"),
control_key="DXVK_CONFIG",
config_key="DXVK_CONFIG",
force_disabled="0",
force_defaults="",
separator=";",
+ grid_row_items=4,
)
def update_settings_override(self, state: ActivationStates):
@@ -397,7 +393,7 @@ def preset_range(start: str, end: str) -> Tuple[Tuple, ...]:
values=("off", "on"),
),
]
- form = [
+ left_form = [
(
OverlaySelectInput("ngx_dlss_sr_override_render_preset_selection", ngx_sr_presets),
"Super Resolution preset",
@@ -407,15 +403,18 @@ def preset_range(start: str, end: str) -> Tuple[Tuple, ...]:
"Ray Reconstruction preset",
),
]
+ right_form = []
self.setupWidget(
grid,
- form,
+ left_form,
+ right_form,
label=self.tr("Mode"),
control_key="DXVK_NVAPI_DRS_SETTINGS",
config_key="DXVK_NVAPI_DRS_SETTINGS",
force_disabled="0",
force_defaults="",
separator=",",
+ grid_row_items=4,
)
def update_settings_override(self, state: ActivationStates):
@@ -471,25 +470,26 @@ def __init__(self, parent=None):
OverlayCheckBox("cpu_power", self.tr("CPU power consumption")),
OverlayCheckBox("gpu_power", self.tr("GPU power consumption")),
]
- form = [
+ left_form = [
(OverlayNumberInput("fps_limit", 0), self.tr("FPS limit")),
(OverlaySelectInput("vsync", mangohud_vsync), self.tr("Vulkan vsync")),
- (
- OverlaySelectInput("gl_vsync", mangohud_gl_vsync),
- self.tr("OpenGL vsync"),
- ),
+ (OverlaySelectInput("gl_vsync", mangohud_gl_vsync), self.tr("OpenGL vsync")),
+ ]
+ right_form = [
(OverlayNumberInput("font_size", 24), self.tr("Font size")),
(OverlaySelectInput("position", mangohud_position), self.tr("Position")),
]
self.setupWidget(
grid,
- form,
+ left_form,
+ right_form,
label=self.tr("Show HUD"),
control_key="MANGOHUD",
config_key="MANGOHUD_CONFIG",
force_disabled="no_display",
force_defaults="read_cfg",
separator=",",
+ grid_row_items=4,
)
def showEvent(self, a0: QShowEvent):
diff --git a/rare/ui/components/tabs/settings/widgets/overlay.py b/rare/ui/components/tabs/settings/widgets/overlay.py
index 256a7bf74e..7d1f9225bf 100644
--- a/rare/ui/components/tabs/settings/widgets/overlay.py
+++ b/rare/ui/components/tabs/settings/widgets/overlay.py
@@ -3,21 +3,21 @@
################################################################################
## Form generated from reading UI file 'overlay.ui'
##
-## Created by: Qt User Interface Compiler version 6.9.1
+## Created by: Qt User Interface Compiler version 6.10.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide6.QtCore import QCoreApplication, QSize, Qt
from PySide6.QtGui import QFont
-from PySide6.QtWidgets import QComboBox, QFormLayout, QFrame, QGridLayout, QGroupBox, QLabel, QSizePolicy, QSpacerItem
+from PySide6.QtWidgets import QComboBox, QFormLayout, QFrame, QGridLayout, QGroupBox, QLabel, QSizePolicy
class Ui_OverlaySettings(object):
def setupUi(self, OverlaySettings):
if not OverlaySettings.objectName():
OverlaySettings.setObjectName(u"OverlaySettings")
- OverlaySettings.resize(343, 119)
+ OverlaySettings.resize(608, 256)
OverlaySettings.setWindowTitle(u"OverlaySettings")
OverlaySettings.setTitle(u"")
self.main_layout = QFormLayout(OverlaySettings)
@@ -69,21 +69,25 @@ def setupUi(self, OverlaySettings):
self.options_group.setTitle(u"")
self.options_layout = QGridLayout(self.options_group)
self.options_layout.setObjectName(u"options_layout")
- self.options_form = QFormLayout()
- self.options_form.setObjectName(u"options_form")
- self.options_form.setLabelAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter)
+ self.left_options_form = QFormLayout()
+ self.left_options_form.setObjectName(u"left_options_form")
+ self.left_options_form.setLabelAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter)
- self.options_layout.addLayout(self.options_form, 1, 0, 1, 1)
+ self.options_layout.addLayout(self.left_options_form, 1, 0, 1, 1)
self.options_grid = QGridLayout()
self.options_grid.setObjectName(u"options_grid")
- self.options_layout.addLayout(self.options_grid, 0, 0, 1, 1)
+ self.options_layout.addLayout(self.options_grid, 0, 0, 1, 2)
- self.hspacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+ self.right_options_form = QFormLayout()
+ self.right_options_form.setObjectName(u"right_options_form")
+ self.right_options_form.setLabelAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter)
- self.options_layout.addItem(self.hspacer, 0, 1, 2, 1)
+ self.options_layout.addLayout(self.right_options_form, 1, 1, 1, 1)
+ self.options_layout.setColumnStretch(0, 1)
+ self.options_layout.setColumnStretch(1, 1)
self.main_layout.setWidget(1, QFormLayout.ItemRole.SpanningRole, self.options_group)
diff --git a/rare/ui/components/tabs/settings/widgets/overlay.ui b/rare/ui/components/tabs/settings/widgets/overlay.ui
index cc967bf952..7fc62b91d9 100644
--- a/rare/ui/components/tabs/settings/widgets/overlay.ui
+++ b/rare/ui/components/tabs/settings/widgets/overlay.ui
@@ -6,8 +6,8 @@
0
0
- 343
- 119
+ 608
+ 256
@@ -88,29 +88,23 @@
-
+
-
-
+
Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter
- -
+
-
- -
-
-
- Qt::Orientation::Horizontal
-
-
-
- 40
- 20
-
+
-
+
+
+ Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter
-
+
From eec3ff001f13a9a3554ed30947cc5b9e12b15847 Mon Sep 17 00:00:00 2001
From: loathingKernel <142770+loathingKernel@users.noreply.github.com>
Date: Thu, 5 Mar 2026 21:57:44 +0200
Subject: [PATCH 2/2] chore: ruff format
---
rare/commands/launcher/__init__.py | 13 ++-----
rare/components/dialogs/login/__init__.py | 4 +-
.../components/dialogs/login/browser_login.py | 5 +--
rare/components/dialogs/login/import_login.py | 1 -
rare/components/dialogs/login/login_frame.py | 1 -
rare/components/dialogs/move.py | 8 ++--
rare/components/tabs/__init__.py | 2 +-
rare/components/tabs/downloads/__init__.py | 11 +++---
rare/components/tabs/downloads/thread.py | 3 +-
rare/components/tabs/downloads/widgets.py | 24 ++++++------
.../components/tabs/integrations/eos_group.py | 1 -
.../tabs/integrations/import_group.py | 5 ++-
.../tabs/library/details/details.py | 39 +++++++++++--------
rare/components/tabs/settings/__init__.py | 2 +-
rare/components/tabs/settings/legendary.py | 1 -
.../tabs/settings/widgets/proton.py | 7 ++--
.../tabs/settings/widgets/runner.py | 12 ++----
rare/components/tabs/settings/widgets/wine.py | 5 +--
rare/components/tabs/store/search.py | 12 ++----
rare/components/tabs/store/wishlist.py | 3 +-
rare/models/game.py | 36 ++++++++---------
rare/models/game_slim.py | 1 -
rare/models/install.py | 1 -
rare/models/signals.py | 1 -
rare/resources/resources.py | 3 ++
rare/resources/static_css/__init__.py | 3 ++
rare/resources/static_css/stylesheet.py | 12 ++----
.../stylesheets/RareStyle/__init__.py | 3 ++
rare/shared/workers/install.py | 1 -
rare/shared/workers/move.py | 2 -
rare/shared/workers/uninstall.py | 1 -
rare/shared/workers/verify.py | 1 -
rare/shared/workers/wine_resolver.py | 1 -
rare/utils/compat/miniproton.py | 14 +++----
rare/utils/compat/steam.py | 3 +-
rare/utils/misc.py | 19 ++++-----
rare/utils/paths.py | 4 +-
rare/utils/steam_grades.py | 2 +-
rare/widgets/image_widget.py | 14 ++++---
39 files changed, 126 insertions(+), 155 deletions(-)
diff --git a/rare/commands/launcher/__init__.py b/rare/commands/launcher/__init__.py
index 636312efbc..3c09eea1a5 100644
--- a/rare/commands/launcher/__init__.py
+++ b/rare/commands/launcher/__init__.py
@@ -58,7 +58,6 @@ class PreLaunchSignals(QObject):
class PreLaunch(QRunnable):
-
def __init__(self, args: InitParams, rgame: RareGameSlim, sync_action=None):
super(PreLaunch, self).__init__()
self.signals = PreLaunchSignals()
@@ -94,8 +93,7 @@ def prepare_launch(self, args: InitParams) -> Optional[LaunchParams]:
proc = get_configured_qprocess(shlex.split(launch.pre_launch_command), launch.environment)
proc.setProcessChannelMode(QProcess.ProcessChannelMode.MergedChannels)
proc.readyReadStandardOutput.connect(
- (lambda obj: obj.logger.debug(
- str(proc.readAllStandardOutput().data(), "utf-8", "ignore"))).__get__(self)
+ (lambda obj: obj.logger.debug(str(proc.readAllStandardOutput().data(), "utf-8", "ignore"))).__get__(self)
)
self.signals.pre_launch_command_started.emit()
self.logger.info("Running pre-launch command %s, %s", proc.program(), proc.arguments())
@@ -115,7 +113,6 @@ class SyncCheckWorkerSignals(QObject):
class SyncCheckWorker(QRunnable):
-
def __init__(self, core: LegendaryCore, rgame: RareGameSlim):
super().__init__()
self.signals = SyncCheckWorkerSignals()
@@ -257,9 +254,7 @@ def send_message(self, message: BaseModel):
def check_saves(self, exit_code: int):
# self.rgame.signals.widget.refresh.connect(lambda: self.on_exit(exit_code))
- self.rgame.signals.widget.refresh.connect(
- (lambda obj: obj.on_exit(exit_code)).__get__(self)
- )
+ self.rgame.signals.widget.refresh.connect((lambda obj: obj.on_exit(exit_code)).__get__(self))
state, (dt_local, dt_remote) = self.rgame.save_game_state
@@ -271,9 +266,7 @@ def check_saves(self, exit_code: int):
# self.sync_dialog.result_ready.connect(
# lambda a: self.__check_saves_finished(exit_code, a)
# )
- self.sync_dialog.result_ready.connect(
- (lambda obj, a: obj.check_saves_finished(exit_code, a)).__get__(self)
- )
+ self.sync_dialog.result_ready.connect((lambda obj, a: obj.check_saves_finished(exit_code, a)).__get__(self))
self.sync_dialog.open()
@Slot(int, int)
diff --git a/rare/components/dialogs/login/__init__.py b/rare/components/dialogs/login/__init__.py
index cd52bd6edf..111efc5e3e 100644
--- a/rare/components/dialogs/login/__init__.py
+++ b/rare/components/dialogs/login/__init__.py
@@ -60,9 +60,7 @@ def __init__(self, args: Namespace, core: LegendaryCore, parent=None):
self.import_page.validated.connect(self._on_page_validated)
self.info_message = {
- self.landing_index: self.tr(
- "Select log-in method."
- ),
+ self.landing_index: self.tr("Select log-in method."),
self.browser_index: self.tr(
"Click the Open Browser button to open the "
"login page in your web browser or copy the link and paste it "
diff --git a/rare/components/dialogs/login/browser_login.py b/rare/components/dialogs/login/browser_login.py
index b2bdc0cff0..45861a370f 100644
--- a/rare/components/dialogs/login/browser_login.py
+++ b/rare/components/dialogs/login/browser_login.py
@@ -17,7 +17,6 @@
class BrowserLogin(LoginFrame):
-
def __init__(self, core: LegendaryCore, parent=None):
super(BrowserLogin, self).__init__(core, parent=parent)
@@ -34,9 +33,7 @@ def __init__(self, core: LegendaryCore, parent=None):
self.ui.copy_button.setIcon(qta_icon("mdi.content-copy", "fa5.copy"))
self.ui.copy_button.clicked.connect(self._on_copy_link)
self.ui.form_layout.setWidget(
- self.ui.form_layout.getWidgetPosition(self.ui.sid_label)[0],
- QFormLayout.ItemRole.FieldRole,
- self.auth_edit
+ self.ui.form_layout.getWidgetPosition(self.ui.sid_label)[0], QFormLayout.ItemRole.FieldRole, self.auth_edit
)
self.ui.open_button.clicked.connect(self._on_open_browser)
diff --git a/rare/components/dialogs/login/import_login.py b/rare/components/dialogs/login/import_login.py
index eee72eba7e..249932da8d 100644
--- a/rare/components/dialogs/login/import_login.py
+++ b/rare/components/dialogs/login/import_login.py
@@ -14,7 +14,6 @@
class ImportLogin(LoginFrame):
-
# FIXME: Use pathspec instead of duplicated code
if platform.system() == "Windows":
localappdata = os.path.expandvars("%LOCALAPPDATA%")
diff --git a/rare/components/dialogs/login/login_frame.py b/rare/components/dialogs/login/login_frame.py
index 2325efaf6b..899d970160 100644
--- a/rare/components/dialogs/login/login_frame.py
+++ b/rare/components/dialogs/login/login_frame.py
@@ -30,4 +30,3 @@ def _on_input_changed(self):
@abstractmethod
def do_login(self) -> None:
pass
-
diff --git a/rare/components/dialogs/move.py b/rare/components/dialogs/move.py
index 2682ce1ba7..e1b216678f 100644
--- a/rare/components/dialogs/move.py
+++ b/rare/components/dialogs/move.py
@@ -35,9 +35,7 @@ def __init__(self, rcore: RareCore, rgame: RareGame, parent=None):
self.rcore = rcore
self.core = rcore.core()
self.rgame: Optional[RareGame] = rgame
- self.options: MoveGameModel = MoveGameModel(
- rgame.app_name, rgame.install_path, rgame.folder_name
- )
+ self.options: MoveGameModel = MoveGameModel(rgame.app_name, rgame.install_path, rgame.folder_name)
self.target_path_edit = PathEdit(
path=self.options.target_path,
@@ -115,7 +113,7 @@ def reject_handler(self):
@Slot(Qt.CheckState)
def __on_rename_path_changed(self, state: Qt.CheckState):
- self.options.rename_path = (state == Qt.CheckState.Checked)
+ self.options.rename_path = state == Qt.CheckState.Checked
self.full_path_info.setText(self.options.full_path)
_ = QSignalBlocker(self.ui.reset_name_check)
self.ui.reset_name_check.setChecked(self.options.reset_name)
@@ -123,7 +121,7 @@ def __on_rename_path_changed(self, state: Qt.CheckState):
@Slot(Qt.CheckState)
def __on_reset_name_changed(self, state: Qt.CheckState):
- self.options.reset_name = (state == Qt.CheckState.Checked)
+ self.options.reset_name = state == Qt.CheckState.Checked
self.full_path_info.setText(self.options.full_path)
_ = QSignalBlocker(self.ui.rename_path_check)
self.ui.rename_path_check.setChecked(self.options.rename_path)
diff --git a/rare/components/tabs/__init__.py b/rare/components/tabs/__init__.py
index a8b97dcb97..73403e2fee 100644
--- a/rare/components/tabs/__init__.py
+++ b/rare/components/tabs/__init__.py
@@ -98,7 +98,7 @@ def eventFilter(self, w: QObject, e: QEvent) -> bool:
if e.button() == Qt.MouseButton.LeftButton:
origin = QPoint(
self.main_bar.tabRect(tab_idx).bottomRight().x() - self.account_menu.sizeHint().width(),
- self.main_bar.tabRect(tab_idx).bottomRight().y()
+ self.main_bar.tabRect(tab_idx).bottomRight().y(),
)
self.account_menu.exec(self.mapToGlobal(origin))
return True
diff --git a/rare/components/tabs/downloads/__init__.py b/rare/components/tabs/downloads/__init__.py
index f8a4fc2c54..42fb2ee7fc 100644
--- a/rare/components/tabs/downloads/__init__.py
+++ b/rare/components/tabs/downloads/__init__.py
@@ -183,16 +183,15 @@ def __refresh_download(self, item: InstallQueueItemModel):
worker = InstallInfoWorker(self.core, item.options)
worker.signals.result.connect(
- (lambda obj, d: obj.start_download(
- InstallQueueItemModel(options=item.options, download=d))).__get__(self)
+ (lambda obj, d: obj.start_download(InstallQueueItemModel(options=item.options, download=d))).__get__(self)
)
worker.signals.failed.connect(
- (lambda obj, m: obj.logger.error(
- f"Failed to refresh download for {item.options.app_name} with error: {m}")).__get__(self)
+ (lambda obj, m: obj.logger.error(f"Failed to refresh download for {item.options.app_name} with error: {m}")).__get__(
+ self
+ )
)
worker.signals.finished.connect(
- (lambda obj: obj.logger.info(
- f"Download refresh worker finished for {item.options.app_name}")).__get__(self)
+ (lambda obj: obj.logger.info(f"Download refresh worker finished for {item.options.app_name}")).__get__(self)
)
QThreadPool.globalInstance().start(worker)
diff --git a/rare/components/tabs/downloads/thread.py b/rare/components/tabs/downloads/thread.py
index acaaae4c88..c2d928ed88 100644
--- a/rare/components/tabs/downloads/thread.py
+++ b/rare/components/tabs/downloads/thread.py
@@ -211,8 +211,7 @@ def _handle_postinstall(self, postinstall, igame):
proc = QProcess(self)
proc.setProcessChannelMode(QProcess.ProcessChannelMode.MergedChannels)
proc.readyReadStandardOutput.connect(
- (lambda obj: obj.logger.debug(
- str(proc.readAllStandardOutput().data(), "utf-8", "ignore"))).__get__(self)
+ (lambda obj: obj.logger.debug(str(proc.readAllStandardOutput().data(), "utf-8", "ignore"))).__get__(self)
)
proc.setProgram(fullpath)
proc.setArguments(postinstall.get("args", "").split(" "))
diff --git a/rare/components/tabs/downloads/widgets.py b/rare/components/tabs/downloads/widgets.py
index 93f32f4f80..afc7322394 100644
--- a/rare/components/tabs/downloads/widgets.py
+++ b/rare/components/tabs/downloads/widgets.py
@@ -104,13 +104,15 @@ def _on_settings_clicked(self):
def _update_game(self, auto: bool):
self.ui.update_button.setDisabled(True)
self.ui.settings_button.setDisabled(True)
- self.enqueue.emit(InstallOptionsModel(
- app_name=self.game.app_name,
- base_path=self.igame.install_path,
- platform=self.igame.platform,
- update=True,
- silent=auto, # True if settings
- ))
+ self.enqueue.emit(
+ InstallOptionsModel(
+ app_name=self.game.app_name,
+ base_path=self.igame.install_path,
+ platform=self.igame.platform,
+ update=True,
+ silent=auto, # True if settings
+ )
+ )
def set_enabled(self, enabled: bool):
self.ui.update_button.setEnabled(enabled)
@@ -145,13 +147,13 @@ def __init__(
worker = InstallInfoWorker(core, item.options)
worker.signals.result.connect(self.__update_info)
worker.signals.failed.connect(
- (lambda obj, m: obj.logger.error(
- f"Failed to requeue download for {item.options.app_name} with error: {m}")).__get__(self)
+ (
+ lambda obj, m: obj.logger.error(f"Failed to requeue download for {item.options.app_name} with error: {m}")
+ ).__get__(self)
)
worker.signals.failed.connect((lambda obj, m: obj.remove.emit(item.options.app_name)).__get__(self))
worker.signals.finished.connect(
- (lambda obj: obj.logger.error(
- f"Download requeue worker finished for {item.options.app_name}")).__get__(self)
+ (lambda obj: obj.logger.error(f"Download requeue worker finished for {item.options.app_name}")).__get__(self)
)
QThreadPool.globalInstance().start(worker)
self.info_widget = QueueInfoWidget(imgmgr, None, None, None, old_igame, parent=self)
diff --git a/rare/components/tabs/integrations/eos_group.py b/rare/components/tabs/integrations/eos_group.py
index 8c7940c7b9..e8c3b2993c 100644
--- a/rare/components/tabs/integrations/eos_group.py
+++ b/rare/components/tabs/integrations/eos_group.py
@@ -42,7 +42,6 @@ class CheckForUpdateWorkerSignals(QObject):
class CheckForUpdateWorker(QRunnable):
-
def __init__(self, core: LegendaryCore):
super(CheckForUpdateWorker, self).__init__()
self.signals = CheckForUpdateWorkerSignals()
diff --git a/rare/components/tabs/integrations/import_group.py b/rare/components/tabs/integrations/import_group.py
index fc91671ec5..e8cb9689e8 100644
--- a/rare/components/tabs/integrations/import_group.py
+++ b/rare/components/tabs/integrations/import_group.py
@@ -73,7 +73,6 @@ class ImportWorkerSignals(QObject):
class ImportWorker(QRunnable):
-
def __init__(
self,
core: LegendaryCore,
@@ -278,7 +277,9 @@ def _app_name_changed(self, app_name: str):
self.ui.import_dlcs_check.setCheckState(Qt.CheckState.Unchecked)
self.ui.import_force_check.setCheckState(Qt.CheckState.Unchecked)
self.ui.import_dlcs_check.setEnabled(self.app_name_edit.is_valid and bool(self.core.get_dlc_for_game(app_name)))
- self.ui.import_button.setEnabled(not bool(self.worker) and (self.app_name_edit.is_valid and self.import_path_edit.is_valid))
+ self.ui.import_button.setEnabled(
+ not bool(self.worker) and (self.app_name_edit.is_valid and self.import_path_edit.is_valid)
+ )
@Slot(Qt.CheckState)
def _on_import_folder_changed(self, state: Qt.CheckState):
diff --git a/rare/components/tabs/library/details/details.py b/rare/components/tabs/library/details/details.py
index 7d28108ec6..a15b7bd8a1 100644
--- a/rare/components/tabs/library/details/details.py
+++ b/rare/components/tabs/library/details/details.py
@@ -166,7 +166,7 @@ def repair_game(self, rgame: RareGame):
"There is an update for {} from {} to {}. Do you want to update the game while repairing it?"
).format(rgame.app_title, rgame.version, rgame.remote_version),
)
- ans = (mbox == QMessageBox.StandardButton.Yes)
+ ans = mbox == QMessageBox.StandardButton.Yes
rgame.repair(repair_and_update=ans)
@Slot(RareGame, str)
@@ -252,9 +252,7 @@ def move_game(self, rgame: RareGame, options: MoveGameModel):
ans = QMessageBox.question(
self,
self.tr("Move game? - {}").format(self.rgame.app_title),
- self.tr("Destination {} already exists. Are you sure you want to overwrite it?").format(
- new_install_path
- ),
+ self.tr("Destination {} already exists. Are you sure you want to overwrite it?").format(new_install_path),
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
QMessageBox.StandardButton.Yes,
)
@@ -439,10 +437,13 @@ def update_game(self, rgame: RareGame):
else:
self.ui.install_button.setText(self.tr("Install"))
- self.ui.description_field.setText(rgame.game.metadata['description'])
+ self.ui.description_field.setText(rgame.game.metadata["description"])
for page in (
- self.ui.ach_progress_page, self.ui.ach_completed_page, self.ui.ach_uninitiated_page, self.ui.ach_hidden_page,
+ self.ui.ach_progress_page,
+ self.ui.ach_completed_page,
+ self.ui.ach_uninitiated_page,
+ self.ui.ach_hidden_page,
):
for w in page.findChildren(AchievementWidget, options=Qt.FindChildOption.FindDirectChildrenOnly):
page.layout().removeWidget(w)
@@ -455,12 +456,17 @@ def update_game(self, rgame: RareGame):
for group, page in zip(
(
- sorted(ach.hidden, key=lambda a: a['xp'], reverse=False),
- sorted(ach.uninitiated, key=lambda a: a['xp'], reverse=False),
- sorted(ach.completed, key=lambda a: a['unlock_date'], reverse=True),
- sorted(ach.in_progress, key=lambda a: a['progress'], reverse=True),
+ sorted(ach.hidden, key=lambda a: a["xp"], reverse=False),
+ sorted(ach.uninitiated, key=lambda a: a["xp"], reverse=False),
+ sorted(ach.completed, key=lambda a: a["unlock_date"], reverse=True),
+ sorted(ach.in_progress, key=lambda a: a["progress"], reverse=True),
+ ),
+ (
+ self.ui.ach_hidden_page,
+ self.ui.ach_uninitiated_page,
+ self.ui.ach_completed_page,
+ self.ui.ach_progress_page,
),
- (self.ui.ach_hidden_page, self.ui.ach_uninitiated_page, self.ui.ach_completed_page, self.ui.ach_progress_page, )
):
self.ui.achievements_toolbox.setItemEnabled(self.ui.achievements_toolbox.indexOf(page), bool(group))
if bool(group):
@@ -483,17 +489,16 @@ def __init__(self, manager: QtRequests, achievement: Dict, parent=None):
image = LoadingImageWidget(manager, parent=self)
image.setFixedSize(ImageSize.LibraryIcon)
- image.fetchPixmap(achievement['icon_link'])
+ image.fetchPixmap(achievement["icon_link"])
title = QLabel(
- f"{achievement['display_name']}"
- f" ({achievement['xp']} XP)",
- parent=self
+ f"{achievement['display_name']} ({achievement['xp']} XP)",
+ parent=self,
)
title.setWordWrap(True)
- description = QLabel(achievement['description'], parent=self)
+ description = QLabel(achievement["description"], parent=self)
description.setWordWrap(True)
- unlock_date = achievement['unlock_date'].astimezone() if achievement['unlock_date'] else None
+ unlock_date = achievement["unlock_date"].astimezone() if achievement["unlock_date"] else None
unlock_date_str = f" ( On: {relative_date(unlock_date)} )" if unlock_date else ""
progress = QLabel(f"Progress: {achievement['progress'] * 100:,.2f}% {unlock_date_str}", parent=self)
if unlock_date:
diff --git a/rare/components/tabs/settings/__init__.py b/rare/components/tabs/settings/__init__.py
index 28463c705b..3bb248221f 100644
--- a/rare/components/tabs/settings/__init__.py
+++ b/rare/components/tabs/settings/__init__.py
@@ -47,4 +47,4 @@ def __init__(self, settings: RareAppSettings, rcore: RareCore, parent=None):
@Slot()
def _on_update_available(self):
- self.tabBar().setTabText(self.about_index, "About (!)")
\ No newline at end of file
+ self.tabBar().setTabText(self.about_index, "About (!)")
diff --git a/rare/components/tabs/settings/legendary.py b/rare/components/tabs/settings/legendary.py
index ca5d51bfd3..c7a5e274ac 100644
--- a/rare/components/tabs/settings/legendary.py
+++ b/rare/components/tabs/settings/legendary.py
@@ -28,7 +28,6 @@ class RefreshGameMetaWorkerSignals(QObject):
class RefreshGameMetaWorker(Worker):
-
def __init__(self, core: LegendaryCore, platforms: Set[str], include_unreal: bool):
super(RefreshGameMetaWorker, self).__init__()
self.core = core
diff --git a/rare/components/tabs/settings/widgets/proton.py b/rare/components/tabs/settings/widgets/proton.py
index 1e86dd9d9c..8b70304611 100644
--- a/rare/components/tabs/settings/widgets/proton.py
+++ b/rare/components/tabs/settings/widgets/proton.py
@@ -146,7 +146,9 @@ def showEvent(self, a0: QShowEvent) -> None:
@Slot(int)
def _on_tool_changed(self, index: int):
- steam_tool: Union[steam.ProtonTool, steam.CompatibilityTool, None] = self.tool_combo.itemData(index, Qt.ItemDataRole.UserRole)
+ steam_tool: Union[steam.ProtonTool, steam.CompatibilityTool, None] = self.tool_combo.itemData(
+ index, Qt.ItemDataRole.UserRole
+ )
steam_environ = steam.get_steam_environment(steam_tool, self.compat_edit.text())
library_paths = steam_environ["STEAM_COMPAT_LIBRARY_PATHS"] if "STEAM_COMPAT_LIBRARY_PATHS" in steam_environ else ""
@@ -211,8 +213,7 @@ def _proton_prefix_edit(text: str) -> Tuple[bool, str, int]:
if not dir_list:
return True, text, IndicatorReasonsCommon.VALID
if any(
- (x in dir_list) for x in
- ("pfx", "shadercache", "dosdevices", "drive_c", "system.reg", "user.reg", "userdef.reg")
+ (x in dir_list) for x in ("pfx", "shadercache", "dosdevices", "drive_c", "system.reg", "user.reg", "userdef.reg")
):
return True, text, IndicatorReasonsCommon.VALID
return False, text, IndicatorReasonsCommon.DIR_NOT_EMPTY
diff --git a/rare/components/tabs/settings/widgets/runner.py b/rare/components/tabs/settings/widgets/runner.py
index 3f2c50b575..f9a3ef9c55 100644
--- a/rare/components/tabs/settings/widgets/runner.py
+++ b/rare/components/tabs/settings/widgets/runner.py
@@ -84,19 +84,13 @@ def _shader_cache_check_changed(self, state: Qt.CheckState):
@Slot()
def _open_pfx_folder(self):
- QDesktopServices.openUrl(
- QUrl.fromLocalFile(lgd_config.get_wine_prefix_with_global(self.app_name))
- )
+ QDesktopServices.openUrl(QUrl.fromLocalFile(lgd_config.get_wine_prefix_with_global(self.app_name)))
@Slot()
def _open_usr_folder(self):
- path = os.path.join(
- lgd_config.get_wine_prefix_with_global(self.app_name), "drive_c", "users", getuser()
- )
+ path = os.path.join(lgd_config.get_wine_prefix_with_global(self.app_name), "drive_c", "users", getuser())
if not os.path.exists(path):
- path = os.path.join(
- lgd_config.get_wine_prefix_with_global(self.app_name), "drive_c", "users", "steamuser"
- )
+ path = os.path.join(lgd_config.get_wine_prefix_with_global(self.app_name), "drive_c", "users", "steamuser")
QDesktopServices.openUrl(path)
@Slot()
diff --git a/rare/components/tabs/settings/widgets/wine.py b/rare/components/tabs/settings/widgets/wine.py
index 1d598f096e..13592c1306 100644
--- a/rare/components/tabs/settings/widgets/wine.py
+++ b/rare/components/tabs/settings/widgets/wine.py
@@ -110,10 +110,7 @@ def _wine_prefix_edit(text: str) -> Tuple[bool, str, int]:
dir_list = os.listdir(text)
if not dir_list:
return True, text, IndicatorReasonsCommon.VALID
- if any(
- (x in dir_list) for x in
- ("dosdevices", "drive_c", "system.reg", "user.reg", "userdef.reg")
- ):
+ if any((x in dir_list) for x in ("dosdevices", "drive_c", "system.reg", "user.reg", "userdef.reg")):
return True, text, IndicatorReasonsCommon.VALID
return False, text, IndicatorReasonsCommon.DIR_NOT_EMPTY
else:
diff --git a/rare/components/tabs/store/search.py b/rare/components/tabs/store/search.py
index 4284b02fd0..aa8e9aedfc 100644
--- a/rare/components/tabs/store/search.py
+++ b/rare/components/tabs/store/search.py
@@ -129,9 +129,7 @@ def init_filter(self):
# lambda: self.prepare_request("sale") if self.on_discount.isChecked() else None
# )
# self.ui.on_discount.toggled.connect(lambda: self.prepare_request())
- self.ui.on_discount.toggled.connect(
- (lambda obj: obj.prepare_request()).__get__(self)
- )
+ self.ui.on_discount.toggled.connect((lambda obj: obj.prepare_request()).__get__(self))
constants = Constants()
self.checkboxes = []
@@ -145,13 +143,9 @@ def init_filter(self):
for text, tag in variables:
checkbox = CheckBox(text, tag)
# checkbox.activated.connect(lambda x: self.prepare_request(added_tag=x))
- checkbox.activated.connect(
- (lambda obj, x: obj.prepare_request(added_tag=x)).__get__(self)
- )
+ checkbox.activated.connect((lambda obj, x: obj.prepare_request(added_tag=x)).__get__(self))
# checkbox.deactivated.connect(lambda x: self.prepare_request(removed_tag=x))
- checkbox.deactivated.connect(
- (lambda obj, x: obj.prepare_request(removed_tag=x)).__get__(self)
- )
+ checkbox.deactivated.connect((lambda obj, x: obj.prepare_request(removed_tag=x)).__get__(self))
groupbox.layout().addWidget(checkbox)
self.checkboxes.append(checkbox)
self.ui.reset_button.clicked.connect(self.reset_filters)
diff --git a/rare/components/tabs/store/wishlist.py b/rare/components/tabs/store/wishlist.py
index 43d3a64205..8bf2af4274 100644
--- a/rare/components/tabs/store/wishlist.py
+++ b/rare/components/tabs/store/wishlist.py
@@ -134,7 +134,8 @@ def filter_wishlist(self, index: int = int(WishlistFilter.NONE)):
WishlistOrder.NAME: lambda x: x.catalog_game.title,
WishlistOrder.PRICE: lambda x: x.catalog_game.price.totalPrice.discountPrice,
WishlistOrder.DEVELOPER: lambda x: x.catalog_game.seller["name"],
- WishlistOrder.DISCOUNT: lambda x: 1 - (x.catalog_game.price.totalPrice.discountPrice / x.catalog_game.price.totalPrice.originalPrice)
+ WishlistOrder.DISCOUNT: lambda x: 1
+ - (x.catalog_game.price.totalPrice.discountPrice / x.catalog_game.price.totalPrice.originalPrice),
}
@Slot(int)
diff --git a/rare/models/game.py b/rare/models/game.py
index 7f5cb2855f..10d1d15b8e 100644
--- a/rare/models/game.py
+++ b/rare/models/game.py
@@ -67,8 +67,9 @@ def __dict__(self):
queued=self.queued,
queue_pos=self.queue_pos,
last_played=self.last_played.isoformat() if self.last_played else datetime.min.replace(tzinfo=timezone.utc),
- achievements_date=self.last_played.isoformat() if self.achievements_date else datetime.min.replace(
- tzinfo=timezone.utc),
+ achievements_date=self.last_played.isoformat()
+ if self.achievements_date
+ else datetime.min.replace(tzinfo=timezone.utc),
grant_date=self.grant_date.isoformat() if self.grant_date else datetime.min.replace(tzinfo=timezone.utc),
steam_appid=str(self.steam_appid) if self.steam_appid else None,
steam_grade=self.steam_grade,
@@ -82,7 +83,6 @@ def __bool__(self):
class RareGame(RareGameSlim):
-
def __init__(
self,
settings: RareAppSettings,
@@ -507,9 +507,9 @@ def achievements(self) -> Optional[Namespace]:
@property
def eulas(self) -> List:
- eulas = self.game.metadata.get('eulaIds') or ['$']
+ eulas = self.game.metadata.get("eulaIds") or ["$"]
- pattern = r'\w+'
+ pattern = r"\w+"
keys = []
for eula in eulas:
keys += re.findall(pattern, eula)
@@ -699,10 +699,7 @@ def modify(self) -> bool:
return False
self.signals.game.install.emit(
InstallOptionsModel(
- app_name=self.app_name,
- base_path=self.__install_base_path,
- platform=self.igame.platform,
- reset_sdl=True
+ app_name=self.app_name, base_path=self.__install_base_path, platform=self.igame.platform, reset_sdl=True
)
)
return True
@@ -730,7 +727,8 @@ def uninstall(self) -> bool:
app_name=self.app_name,
keep_folder=self.is_dlc,
keep_config=self.sdl_available or self.is_dlc or platform.system() not in {"Windows"},
- ))
+ )
+ )
return True
def launch(
@@ -789,14 +787,13 @@ def launch(
class RareEosOverlay(RareGameBase):
-
def __init__(
- self,
- settings: RareAppSettings,
- legendary_core: LegendaryCore,
- image_manager: ImageManager,
- game: Game,
- ):
+ self,
+ settings: RareAppSettings,
+ legendary_core: LegendaryCore,
+ image_manager: ImageManager,
+ game: Game,
+ ):
super(RareEosOverlay, self).__init__(legendary_core, game)
self.settings = settings
self.image_manager = image_manager
@@ -911,8 +908,9 @@ def uninstall(self) -> bool:
UninstallOptionsModel(
app_name=self.app_name,
keep_overlay_keys=platform.system() not in {"Windows"},
- ))
+ )
+ )
return True
-__all__ = ["RareGame", "RareEosOverlay"]
\ No newline at end of file
+__all__ = ["RareGame", "RareEosOverlay"]
diff --git a/rare/models/game_slim.py b/rare/models/game_slim.py
index 84e6f26e38..edf7b05ef3 100644
--- a/rare/models/game_slim.py
+++ b/rare/models/game_slim.py
@@ -49,7 +49,6 @@ class RareGameSignalsGame(QObject):
class RareGameSignals(QObject):
-
def __init__(self, /):
super(RareGameSignals, self).__init__()
self.progress = RareGameSignalsProgress()
diff --git a/rare/models/install.py b/rare/models/install.py
index 276af1e6c3..777a53aee9 100644
--- a/rare/models/install.py
+++ b/rare/models/install.py
@@ -137,7 +137,6 @@ def __bool__(self):
class MoveGameModel:
-
def __init__(self, app_name, install_path: str, default_name: str):
self.app_name: str = app_name
self.default_name: str = default_name
diff --git a/rare/models/signals.py b/rare/models/signals.py
index bed9c8ae6e..1f0386cb44 100644
--- a/rare/models/signals.py
+++ b/rare/models/signals.py
@@ -46,7 +46,6 @@ class GlobalSignalsDiscordRPCSignals(QObject):
class GlobalSignals(QObject):
-
def __init__(self):
super(GlobalSignals, self).__init__()
self.application = GlobalSignalsApplicationSignals()
diff --git a/rare/resources/resources.py b/rare/resources/resources.py
index 6f3ce6c637..cb40fb7605 100644
--- a/rare/resources/resources.py
+++ b/rare/resources/resources.py
@@ -35698,10 +35698,13 @@
\x00\x00\x01\x905 \x19\x03\
"
+
def qInitResources():
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
def qCleanupResources():
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
qInitResources()
diff --git a/rare/resources/static_css/__init__.py b/rare/resources/static_css/__init__.py
index 5b6d4b6d35..5dc5c7590c 100644
--- a/rare/resources/static_css/__init__.py
+++ b/rare/resources/static_css/__init__.py
@@ -87,10 +87,13 @@
\x00\x00\x01\x9c]]\x00Y\
"
+
def qInitResources():
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
def qCleanupResources():
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
qInitResources()
diff --git a/rare/resources/static_css/stylesheet.py b/rare/resources/static_css/stylesheet.py
index 82f56713ff..b9b4cb635c 100644
--- a/rare/resources/static_css/stylesheet.py
+++ b/rare/resources/static_css/stylesheet.py
@@ -55,18 +55,12 @@ def css_name(widget: Union[wrappertype, QObject, Type], subwidget: str = ""):
# [Un]InstallButton
-style.QPushButton["#InstallButton"].setValues(
- borderColor=QColor(0, 180, 0).name(), backgroundColor=QColor(0, 100, 0).name()
-)
-style.QPushButton["#InstallButton"].hover.setValues(
- borderColor=QColor(0, 135, 0).name(), backgroundColor=QColor(0, 70, 0).name()
-)
+style.QPushButton["#InstallButton"].setValues(borderColor=QColor(0, 180, 0).name(), backgroundColor=QColor(0, 100, 0).name())
+style.QPushButton["#InstallButton"].hover.setValues(borderColor=QColor(0, 135, 0).name(), backgroundColor=QColor(0, 70, 0).name())
style.QPushButton["#InstallButton"].disabled.setValues(
borderColor=QColor(0, 60, 0).name(), backgroundColor=QColor(0, 40, 0).name()
)
-style.QPushButton["#UninstallButton"].setValues(
- borderColor=QColor(180, 0, 0).name(), backgroundColor=QColor(100, 0, 0).name()
-)
+style.QPushButton["#UninstallButton"].setValues(borderColor=QColor(180, 0, 0).name(), backgroundColor=QColor(100, 0, 0).name())
style.QPushButton["#UninstallButton"].hover.setValues(
borderColor=QColor(135, 0, 0).name(), backgroundColor=QColor(70, 0, 0).name()
)
diff --git a/rare/resources/stylesheets/RareStyle/__init__.py b/rare/resources/stylesheets/RareStyle/__init__.py
index e0b9441a1f..0f0a57f6a4 100644
--- a/rare/resources/stylesheets/RareStyle/__init__.py
+++ b/rare/resources/stylesheets/RareStyle/__init__.py
@@ -363,10 +363,13 @@
\x00\x00\x01\x8f\xdd\xb9\xe7\xe2\
"
+
def qInitResources():
QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
def qCleanupResources():
QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
+
qInitResources()
diff --git a/rare/shared/workers/install.py b/rare/shared/workers/install.py
index 35b715f9ce..f83bfb6ce8 100644
--- a/rare/shared/workers/install.py
+++ b/rare/shared/workers/install.py
@@ -19,7 +19,6 @@ class InstallInfoWorkerSignals(QObject):
class InstallInfoWorker(Worker):
-
def __init__(self, core: LegendaryCore, options: InstallOptionsModel):
super(InstallInfoWorker, self).__init__()
self.signals = InstallInfoWorkerSignals()
diff --git a/rare/shared/workers/move.py b/rare/shared/workers/move.py
index 33ccd0be2d..ed95f6c499 100644
--- a/rare/shared/workers/move.py
+++ b/rare/shared/workers/move.py
@@ -30,7 +30,6 @@ class MoveInfoWorkerSignals(QObject):
class MoveInfoWorker(Worker):
-
def __init__(self, rgame: RareGame, igames: Iterator[RareGame], options: MoveGameModel):
super(MoveInfoWorker, self).__init__()
self.signals = MoveInfoWorkerSignals()
@@ -109,7 +108,6 @@ class MoveWorkerSignals(QObject):
class MoveWorker(QueueWorker):
-
def __init__(self, core: LegendaryCore, rgame: RareGame, options: MoveGameModel):
super(MoveWorker, self).__init__()
self.signals = MoveWorkerSignals()
diff --git a/rare/shared/workers/uninstall.py b/rare/shared/workers/uninstall.py
index 61ea760958..0dea7b2c10 100644
--- a/rare/shared/workers/uninstall.py
+++ b/rare/shared/workers/uninstall.py
@@ -100,7 +100,6 @@ class UninstallWorkerSignals(QObject):
class UninstallWorker(Worker):
-
def __init__(self, core: LegendaryCore, rgame: RareGame, options: UninstallOptionsModel):
super(UninstallWorker, self).__init__()
self.signals = UninstallWorkerSignals()
diff --git a/rare/shared/workers/verify.py b/rare/shared/workers/verify.py
index b82305c9fa..a34ab5d643 100644
--- a/rare/shared/workers/verify.py
+++ b/rare/shared/workers/verify.py
@@ -19,7 +19,6 @@ class VerifyWorkerSignals(QObject):
class VerifyWorker(QueueWorker):
-
def __init__(self, core: LegendaryCore, args: Namespace, rgame: RareGame):
super(VerifyWorker, self).__init__()
self.signals = VerifyWorkerSignals()
diff --git a/rare/shared/workers/wine_resolver.py b/rare/shared/workers/wine_resolver.py
index c6bc627231..13b4667785 100644
--- a/rare/shared/workers/wine_resolver.py
+++ b/rare/shared/workers/wine_resolver.py
@@ -30,7 +30,6 @@ class WinePathResolverSignals(QObject):
class WinePathResolver(Worker):
-
def __init__(self, core: LegendaryCore, app_name: str, path: str):
super(WinePathResolver, self).__init__()
self.signals = WinePathResolverSignals()
diff --git a/rare/utils/compat/miniproton.py b/rare/utils/compat/miniproton.py
index 32045a29a2..d69ae55fab 100644
--- a/rare/utils/compat/miniproton.py
+++ b/rare/utils/compat/miniproton.py
@@ -42,7 +42,7 @@ def run_proc(args: List, env: Dict):
"d3d12": "n,b;",
"d3d12core": "n,b",
}
- dlloverrides = ";".join(("=".join((k , v)) for k, v in dlls.items()))
+ dlloverrides = ";".join(("=".join((k, v)) for k, v in dlls.items()))
dlloverrides = ";".join((os.environ.get("WINEDLLOVERRIDES", ""), dlloverrides))
env = {
@@ -55,26 +55,26 @@ def run_proc(args: List, env: Dict):
local_env = os.environ.copy()
local_env.update(env)
- #determine mode
+ # determine mode
rc = 0
if sys.argv[1] == "run":
- #start target app
+ # start target app
rc = run_proc([wine_bin] + sys.argv[2:], local_env)
elif sys.argv[1] == "waitforexitandrun":
- #wait for wineserver to shut down
+ # wait for wineserver to shut down
run_proc([wineserver_bin, "-w"], local_env)
- #then run
+ # then run
rc = run_proc([wine_bin] + sys.argv[2:], local_env)
elif sys.argv[1] == "runinprefix":
rc = run_proc([wine_bin] + sys.argv[2:], local_env)
elif sys.argv[1] == "getcompatpath":
- #linux -> windows path
+ # linux -> windows path
path = subprocess.check_output([wine_bin, "winepath", "-w", sys.argv[2]], env=local_env, stderr=sys.stderr)
sys.stdout.buffer.write(path)
sys.stdout.buffer.flush()
sys.stderr.buffer.flush()
elif sys.argv[1] == "getnativepath":
- #windows -> linux path
+ # windows -> linux path
path = subprocess.check_output([wine_bin, "winepath", sys.argv[2]], env=local_env, stderr=sys.stderr)
sys.stdout.buffer.write(path)
sys.stdout.buffer.flush()
diff --git a/rare/utils/compat/steam.py b/rare/utils/compat/steam.py
index 64bc922442..580592cb84 100644
--- a/rare/utils/compat/steam.py
+++ b/rare/utils/compat/steam.py
@@ -361,8 +361,7 @@ def find_compatibility_tools(steam_path: str) -> List[CompatibilityTool]:
def get_runtime(
- tool: Union[ProtonTool, CompatibilityTool],
- runtimes: Dict[str, Union[SteamRuntime, UmuRuntime]]
+ tool: Union[ProtonTool, CompatibilityTool], runtimes: Dict[str, Union[SteamRuntime, UmuRuntime]]
) -> Union[SteamRuntime, UmuRuntime, None]:
required_tool = tool.required_tool
if required_tool is None:
diff --git a/rare/utils/misc.py b/rare/utils/misc.py
index 97cd661216..065385f16d 100644
--- a/rare/utils/misc.py
+++ b/rare/utils/misc.py
@@ -180,23 +180,23 @@ def relative_date(date):
diff = datetime.now(UTC) - date
s = diff.seconds
if diff.days > 7 or diff.days < 0:
- return date.strftime('%d %b %y')
+ return date.strftime("%d %b %y")
elif diff.days == 1:
- return '1 day ago'
+ return "1 day ago"
elif diff.days > 1:
- return '{} days ago'.format(diff.days)
+ return "{} days ago".format(diff.days)
elif s <= 1:
- return 'just now'
+ return "just now"
elif s < 60:
- return '{} seconds ago'.format(s)
+ return "{} seconds ago".format(s)
elif s < 120:
- return '1 minute ago'
+ return "1 minute ago"
elif s < 3600:
- return '{} minutes ago'.format(s//60)
+ return "{} minutes ago".format(s // 60)
elif s < 7200:
- return '1 hour ago'
+ return "1 hour ago"
else:
- return '{} hours ago'.format(s//3600)
+ return "{} hours ago".format(s // 3600)
def qta_icon(icn_str: str, fallback: str = None, **kwargs):
@@ -219,6 +219,7 @@ def qta_icon(icn_str: str, fallback: str = None, **kwargs):
# Posted by benrg
# Retrieved 2025-12-25, License - CC BY-SA 4.0
+
def partial_bound_method(bound_method, *args, **kwargs):
f = functools.partialmethod(bound_method.__func__, *args, **kwargs)
# NB: the seemingly redundant lambda is needed to ensure the correct result type
diff --git a/rare/utils/paths.py b/rare/utils/paths.py
index 973c812755..9f50db1aab 100644
--- a/rare/utils/paths.py
+++ b/rare/utils/paths.py
@@ -149,7 +149,7 @@ def setup_compat_shaders_dir(path: str) -> Dict:
"__GL_SHADER_DISK_CACHE_PATH": os.path.join(path, "nvidiav1"),
"__GL_SHADER_DISK_CACHE_READ_ONLY_APP_NAME": "steam_shader_cache;steamapp_merged_shader_cache",
"__GL_SHADER_DISK_CACHE_SIZE": "10737418240", # 10GiB
- #"__GL_SHADER_DISK_CACHE_SKIP_CLEANUP": "1",
+ # "__GL_SHADER_DISK_CACHE_SKIP_CLEANUP": "1",
# Mesa
"MESA_DISK_CACHE_READ_ONLY_FOZ_DBS": "steam_cache,steam_precompiled",
"MESA_DISK_CACHE_SINGLE_FILE": "1",
@@ -257,7 +257,7 @@ def get_rare_executable(*, external: bool = False) -> List[str]:
if os.environ.get("SNAP") and external:
return ["snap", "run", "rare"]
if os.environ.get("container") == "flatpak" and external:
- return ["flatpak", "run", "io.github.dummerle.rare"]
+ return ["flatpak", "run", "io.github.dummerle.rare"]
# lk: detect if nuitka
if "__compiled__" in globals():
diff --git a/rare/utils/steam_grades.py b/rare/utils/steam_grades.py
index 7a0dd18a76..46605f3115 100644
--- a/rare/utils/steam_grades.py
+++ b/rare/utils/steam_grades.py
@@ -14,6 +14,7 @@
logger = getLogger("SteamGrades")
+
class ProtondbRatings(int, Enum):
# internal
PENDING = ("pending", -2)
@@ -59,7 +60,6 @@ def _download_steam_appids(self) -> bytes:
return resp.content
def load_steam_appids(self) -> Dict:
-
if SteamGrades.__steam_appids:
return SteamGrades.__steam_appids
diff --git a/rare/widgets/image_widget.py b/rare/widgets/image_widget.py
index 8315dc2038..74d14b52c4 100644
--- a/rare/widgets/image_widget.py
+++ b/rare/widgets/image_widget.py
@@ -190,11 +190,15 @@ def __init__(self, manager: QtRequests, parent=None):
def fetchPixmap(self, url: str, params: Dict = None):
self.spinner.setFixedSize(self._image_size.size)
self.spinner.start()
- params = {
- "resize": 1,
- "w": self._image_size.base.size.width(),
- "h": self._image_size.base.size.height(),
- } if not params else params
+ params = (
+ {
+ "resize": 1,
+ "w": self._image_size.base.size.width(),
+ "h": self._image_size.base.size.height(),
+ }
+ if not params
+ else params
+ )
super().fetchPixmap(url, params=params)
def _on_image_ready(self, data):