Skip to content

Refactor: Remove singletons, add RareAppSettings#603

Merged
loathingKernel merged 55 commits intoRareDevs:mainfrom
loathingKernel:develop
Oct 1, 2025
Merged

Refactor: Remove singletons, add RareAppSettings#603
loathingKernel merged 55 commits intoRareDevs:mainfrom
loathingKernel:develop

Conversation

@loathingKernel
Copy link
Contributor

  • RareApp: load language in base class
  • RareGame: rename a couple of getters to match their respective setters.
  • CloudSaves: do not hardcode auto_sync_cloud key
  • RareSettings: replace deprecated QCheckBox.stateChanged
  • ConfigHelper: refactor fallback-to-global function names
  • chore: fix some ruff issues
  • RunnerSettings: add global switch for per-game shader cache
  • RareAppSettings: introduce class to extent QSettings
  • RareApp: remove singletons, go through RareCore pending further refactoring
  • Rare: remove XDG_CONFIG_HOME from the environment when running under Windows
  • RareCore: set updated graphql host when initializing LgendaryCore
  • RareSettings: destroy and delete RareSettings object on exit
  • refactor: (WIP) Pass singletons as constructor arguments
  • WineSettings: Store wine exec/prefix when a compat tool is enabled
  • CloudSaves: validate save path input against the path specification from legendary.
  • ProtonSettings: default to isolated compat data location if it already exists

@loathingKernel loathingKernel marked this pull request as draft August 28, 2025 18:16
@loathingKernel loathingKernel force-pushed the develop branch 3 times, most recently from 9e9b299 to abb7725 Compare September 27, 2025 20:23
@loathingKernel loathingKernel marked this pull request as ready for review October 1, 2025 15:55
DiscordRPC: refactor to use mode enumeration instead of hard-coded options
Also reformat with ruff and commit here because I am an idiot.
…Windows

XDG_CONFIG_HOME being in the environment would cause legendary to resolve
the config path to the Linux client one while running in Wine
Instead of depending on `.instance()` methods to get the initialized
singletons, pass them as constructor arguments. It should clear up what
is used where and improve both consistency and readability of the code.
and restore them once it is disabled. Wine related settings are stored in
Rare's config and the affected variables are removed from legendary's config
…rom legendary.

This works around a deeper issue with legendary's `check_savegame_state`
generating an exception when it tries to `stat` broken symlinkings. In any
case, this might better in general, as our input is only set when if we are
certain enough it is correct.
Add a `validationFinished(bool, str)` signal to indicate that is emitted
when the input validation has finished. The result contains if the input
was valid, and the reason is string form.

The `refresh()` method is meant to be use to refresh re-validate and refresh
the indicator upon request. This can be used when showing the widget to make
sure the existing input is valid.
The validation method checks if the path exists and if the path is writable.
The validation method checks if the path exists and it is writable.
Issue stemmed from the validation slot calling `__on_option_changed`. Instead
locally disable install button and enable verify button when the path changes.
This way once the preparation thread finishes it will enable install button.
…mpat tool

This is here to work around legendary's broken handling for `STEAM_COMPAT_DATA_PATH`
when resolving save paths. The `LegendaryCore.get_save_path` method checks
if `STEAM_COMPAT_DATA_PATH` is set only on a per-game basis and it doesn't
fall back to checking the if the variable is set globally.
* SelectiveWidget: move into dialogs, it's the only place it is used
* SelectiveWidget: move with selective dialog
@loathingKernel loathingKernel merged commit 1c006b7 into RareDevs:main Oct 1, 2025
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant