1
0
Fork 0
mirror of synced 2024-09-30 09:17:37 +13:00
Commit graph

228 commits

Author SHA1 Message Date
loathingKernel
3c43da1594 RareCore: Add options to exclude non-asset games and entitlements from startup
* Add options in settings to not request non-asset games and entitlements.

This greatly improves startup time but reduces functionality a bit. Both
options are disabled by default.

* Remove the old options to exclude Win32 and Mac games as they were no longer relevant.

* Add a performance context manager to log execution time when used.

* Fixed an issue with UbisoftGroup where multiple threads would spawn.
2024-01-19 00:57:16 +02:00
loathingKernel
80ac9296fc Rare: cherry-pick some sourcery suggestions 2024-01-02 17:57:02 +02:00
loathingKernel
600441a614 Rare: Import platform specific modules only on said platforms 2023-12-24 21:08:26 +02:00
loathingKernel
efe9031211 Proton: Add functions to find and integrate compatibilty tools and runtimes 2023-12-24 21:08:26 +02:00
loathingKernel
1f34ad4b13 ProtonSettings: Move proton search function into utils/proton.py 2023-12-24 21:08:26 +02:00
loathingKernel
85d29372d4
GameSettings: Hide proton settings on macOS 2023-12-17 19:34:37 +02:00
loathingKernel
6d5b60a56e
LegendarySettings: Add path edit for macOS specific mac_install_dir option
Used only when installing macOS games on macOS, in any other OS
the setting is set to the same value as `install_dir`
2023-12-15 23:28:49 +02:00
loathingKernel
392b4b7896
RareSettings: Always show information label in interface section 2023-12-15 23:23:32 +02:00
loathingKernel
1677ea762c
FetchWorker: Fix issue with missing MacOS assets on MacOS
Using `LegendaryCore.get_game_and_dlc_list` with platform `Windows`
updated the assets only for the `Windows` builds of the games missing
`Win32` and `MacOS` assets on clean installs. This caused Rare to not
include MacOS install options on MacOS (duh!). This might also have been
the cause that users were unable to launch games, since they where only
offered the `Windows` build of the games (big duh!).

To fix this, fetch the assets for `Win32` and `MacOS` games before getting
the final list of games and dlcs based on the `Windows` platform.

In this regard, also re-use the existing options for getting metadata to
give the option to the user to include them when updating assets. Also add
an option to include Unreal engine assets which until now were fetched
unconditionally.

* Include Unreal: When the user option is `true` or debugging.
  Defaults to `false`
* Update Win32: When the user option is `true` or debugging.
  Defaults to `false`
* Update MacOS: Force on MacOS, when the option is `true` or debugging on
  other platforms. Defaults to `true` on MacOS and is disabled,
  `false` on others

Furthermore, respect legendary's `default_platform` config option and
set it in the config on new configurations. The new method in our
LegendaryCore monkey allows us to use that option in RareGame when doing
version checks on not installed games, and not defaulting to `Windows`.

Finally, set `install_platform_fallback` to false in a new config to
avoid unwanted side-effects.
2023-12-15 16:57:32 +02:00
loathingKernel
0ef2497afb
QtRequests: Handle multiple requests concurrently and use caching
It is still junky but less so. It allows us to use QNetworkRequest's
caching mechanism instead of doing so on our own per-case.
2023-12-12 12:41:18 +02:00
loathingKernel
8ec82f0283
About: Use UI membership instead of double inheritance 2023-12-10 14:22:28 +02:00
loathingKernel
562c956634
DebugSettings: Refactor slightly
The quit signal is disconnected currently.
2023-12-10 14:22:28 +02:00
Stelios Tsampas
dab13748f3
About: Fix crash on version update check
Fixes: #330
2023-12-07 19:33:58 +02:00
loathingKernel
110ea51ed6
DxvkSettings: Add compiler config option 2023-11-28 16:38:02 +02:00
loathingKernel
301d070ab3
WrapperSettings: Show wrapper name in warning dialogs. 2023-11-28 16:38:01 +02:00
loathingKernel
7b308d7c90
WrapperSettings: Use Ui through membership instead of inheritance. 2023-11-28 16:38:01 +02:00
loathingKernel
536078748b
WrapperWidget: Use a drop-down menu to hold actions. 2023-11-28 16:38:01 +02:00
loathingKernel
22e5d3c1a3
Wrappers: Use an edit button instead of double-click 2023-11-28 16:38:01 +02:00
loathingKernel
49fdd410ce
Housekeeping: Remove some print remnants 2023-11-28 16:38:01 +02:00
loathingKernel
ecdafd3c1c
Wrappers: Allow wrapper editing on double-click.
Internally this works by removing the old wrapper and adding a new wrapper
int the same index.
2023-11-28 16:38:00 +02:00
loathingKernel
95fba89277
Wrapper: Truncate text on widgets to show only the command
Truncate the widget's text down to the command only without the arguments.
Show the full command with the arguments in the tooltip instead.

Update some text.
2023-11-28 16:38:00 +02:00
loathingKernel
21141e43ea
Wrapper: Fix wrapper reordering not being saved.
The order was determined by the order of the container dictionary entries.
Re-order them before returning the list by their index in the container
widget.

Fixes #304
2023-11-28 16:38:00 +02:00
loathingKernel
07cbcf52d0
Meta: Update links 2023-11-28 15:20:06 +02:00
loathingKernel
f3a962260c
About: Update page
* Check for updates each time the page is visited
* Updated links, developers and contributors.
* Use a less difficult to read color for links

The check for updates still happens at startup, there is now a
subsequent check every time the about label is visited.

The update check should be moved into RareCore itself in the future.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-11-28 15:12:56 +02:00
lennard
42c1a1aaa6 Add a small fix 2023-04-08 01:03:14 +02:00
lennard
c876e1fc3a Fix linux and proton settings environment_changed on windows 2023-04-08 01:03:14 +02:00
Dummerle
3f17a69e65
Merge pull request #272 from loathingKernel/fixups
Show environment variables from the "default" section in per-game settings.
2023-04-07 19:37:56 +02:00
loathingKernel
2e1585bda8
EnvVarsModel: Be more lenient when checking for unchanged contents
Previously the unchanged contents check tested both `key` and `value`
at the same time, so the following case was not accepted.

`ENV_VAR=ENV_VAR`

No matter how unlikely it is for the key to be equal to the value, there
is no reason to restrict it.

For the `key` ("0") column, protecting against existing keys also handles
this case. For the `value` ("1") column, a check has been added.
2023-04-07 14:19:20 +03:00
lennard
9644d45b23
Check if mangohud exists when enabling it 2023-04-05 17:51:36 +02:00
lennard
df1731de09 Fix key error for default mango hud settings 2023-04-05 13:09:34 +02:00
loathingKernel
28e6f02fc1
GameSettings: Emit signal when a non-editable row changes from the settings 2023-03-31 14:03:32 +03:00
loathingKernel
639395c454
EnvVars: Re-enable key press handler
EnvVarsModel: Better vertical header icons
2023-03-31 02:42:16 +03:00
loathingKernel
4b2bc7f91f
EnvVars: Handle environment variables with a QAbstractTableModel
Using a ChainMap and this custom model, we can display global environ
variables in the per-game settings, allowin better overview and
simpler override.
2023-03-29 14:07:19 +03:00
loathingKernel
392ea81707
ProtonSettings: correctly access wine_groupbox 2023-03-29 14:02:46 +03:00
lennard
554d3557d3
fix auto sync saves 2023-03-19 20:23:44 +01:00
loathingKernel
ae74d3438b
GameSettings: Use a PathEdit for override_exe
In the process convert to Ui membership instead of dual
sub-classing for those forms
2023-03-16 12:41:50 +02:00
loathingKernel
837b391350
PathEdit: Allow for the completer's root path to be set at runtime.
This allows to complete from relative paths, such use exe override

Fix constructor argument names to follow Qt's types.
Set the same filters as the dialog for the completer.
Use the completer's icon provider for the dialog.

Force Rare to use Qt's file dialog instead of the native one.
2023-03-15 22:49:18 +02:00
loathingKernel
5cf802dee7
ProtonSettings: Don't default to a directory when there is no configuration
Defaulting to a directory caused the configuration file to flood with
`STEAM_COMPAT_DATA_PATH` options after IndicatorLineEdit became
 asynchronous
2023-03-14 13:19:51 +02:00
loathingKernel
d641d0fcf2
DefaultGameSettings: Less verbose file name 2023-03-14 13:17:43 +02:00
lennard
a66600efa3
Move cloud save ui to a new tab in game_info
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 17:46:26 +02:00
loathingKernel
e55c40448c
Misc: rename get_size to format_size 2023-03-06 00:39:23 +02:00
loathingKernel
ca9bf7c1e8 StaticStylesheet: Share common properties by setting common object names 2023-03-03 16:51:26 +02:00
loathingKernel
0e161eb4d2 Use Worker base class for runnables in legendary settings and ubisoft widget.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-27 23:49:44 +02:00
loathingKernel
5ba368a5bf SideTabContainer: Use a signal to update the title instead of monkeypatching setTitle method into the widget
Widgets that need to implement a title should be of a dual subclass
of any `QWidget` subclass and the `SideTabContents` class which provides
the signal.
2023-02-21 15:27:52 +02:00
loathingKernel
4ef73b48ef Dialogs: Homogenize dialog titles 2023-02-18 19:36:49 +02:00
loathingKernel
dd6df40e40 ExtraWidgets: Remove SideTab widgets and update imports 2023-02-18 17:33:25 +02:00
loathingKernel
5938835249 ExtraWidgets: Remove IndicatorLineEdit and PathEdit and update imports 2023-02-18 17:29:41 +02:00
loathingKernel
ecc1bd8d5c IndicatorLineEdit: Run edit callback function asynchronously
Execute the edit callback function in a thread. By executing it in a thread
we don't have to wait for longer validation procedures to finish to
continue updating the UI. This is most notable in the MoveGamePopUp
which is heavy on disk IO.

Because we cannot use special text formatting in a thread, the
indicator messages have been reworked while also becoming extensible.

A dictionary of extended reasons can be specified through the
`IndicatorLineEdit.extend_reasons()` method.

The dictionary has to follow the following format
```
python
{
	MyIndicatorReasons.REASON: self.tr("Reason message")
	MyIndicatorReasons.OTHER_REASON: self.tr("Other reason message")
}
```

In the above example `MyIndicatorReasons` is a subclass of `IndicatorReasons`
which should be specified as follows

```
python
MyIndicatorReasons(IndicatorReasons):
	REASON = auto()
	OTHER_REASON = auto()
```
2023-02-18 14:37:37 +02:00
loathingKernel
1721677e33 GameWidget: Implement reactive and interactive labels
The `status_label` displays what is currently going on with the game.
It reflects the current operation running on it or if it requires special
attention (update, needs verification etc)

The `tooltip_label` displays hover information such as what happens
if a part of the widget is clicked or in the case of the launch button if
the game can run (without version check, offline etc)

The context menu on the widgets will be updated and populated according
to the installation state of the game. Since the context menu was revised
the shortcut creation code was revised too to make it more compact.

the `create_desktop_link` and `get_rare_executable` functions are moved
from `rare.utils.misc` to `rare.utils.paths` to avoid cyclical imports and
better grouping. Two functions are added, `desktop_link_path` to uniformly
calculate the path of the shortcut and `desktop_links_supported` which
checks if Rare supports creating shortcuts on the current platform.
`desktop_links_supported` should be used as safeguard before `desktop_link_path`.

Desktop links are currently untested on Windows but if `shortcut.Description`
works as expected, it should be good to go.
2023-02-07 13:41:59 +02:00
loathingKernel
211f92d2d6 MainTabWidget: Use returned indices instead of hard-coding disabled tabs
Parent the tabs properly for consistency
2023-02-06 09:19:31 +02:00