1
0
Fork 0
mirror of synced 2024-08-21 05:01:56 +12:00
Commit graph

1533 commits

Author SHA1 Message Date
loathingKernel
8f88dc661c
DlThread: Create callback function for future use 2023-12-10 22:06:44 +02:00
loathingKernel
845bc54a90
InstallDialog: Add selective downloads descriptions as tooltips 2023-12-10 14:22:29 +02:00
loathingKernel
d1d7e6d2e7
InstallDialog: Code consistency with button slot names 2023-12-10 14:22:29 +02:00
loathingKernel
13eaa459e1
LaunchDialog: accept_close -> reject_close for code consistency 2023-12-10 14:22:29 +02:00
loathingKernel
0ea8d2c0d2
UninstallDialog: Handle Escape key
Handle Escape key to go through the proper cancellation routine.
2023-12-10 14:22:29 +02:00
loathingKernel
8ec82f0283
About: Use UI membership instead of double inheritance 2023-12-10 14:22:28 +02:00
loathingKernel
90f55287c0
WineResolver: Fix typo 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
loathingKernel
a33c4e5cf2
AccountWidget: Use ExitCodes enum everywhere instead of magic values 2023-12-10 14:22:28 +02:00
Stelios Tsampas
7824fa20a8
InstallDialog: Always show prerequisites if they exist
* Do not depend the relevant InstallOptionsModel option to on the running platform
2023-12-10 14:22:27 +02:00
loathingKernel
1c9b6f3faf
Launcher: Add Fortnite to detached processes 2023-12-10 14:22:27 +02:00
loathingKernel
b20be46752
InstallDialog: Offer to install prerequisites on native platforms 2023-12-10 14:22:27 +02:00
loathingKernel
5be24a4d89
SteamGrades: Use orjson instead of python's implementation 2023-12-10 14:21:39 +02:00
loathingKernel
86c683835b
Rare: Unset QT_QPA_PLATFORMTHEME at startup
It can mess up theming.
2023-12-10 14:21:39 +02:00
loathingKernel
99eaf86507
AccountWidget: Add a Quit button in the widget in case the system tray
is unavailable (for example running in a gamescope session)

* Do not show the launch window while instantiating the application. This
probably was causing numerous issues because it was running outside of
the applications event loop. This also fixes the exit button on the login
dialog requiring `sys.exit()` to quit Rare. Now it goes through the
proper cleanup procedures.

* Make slot and signal names more uniform

* Fix a problem with RareCore connecting RareGames to the same signals
multiple times when the library was refreshed.
2023-12-10 14:21:39 +02:00
loathingKernel
c21fddefb4
Utils: Delete deprecated CloudWorker. 2023-12-10 14:21:38 +02:00
loathingKernel
c4da6a9512
MainWindow: Untie exit procedure from offline argument 2023-12-10 14:21:38 +02:00
loathingKernel
6e7ea3181e
GameInfo: Add tags groupbox 2023-12-10 14:21:38 +02:00
loathingKernel
75a339d390
Flatpak: Don't export subprocess's env in flatpak's env 2023-12-10 14:21:38 +02:00
loathingKernel
193b5fba44
Paths: Expose Rare configuration directory 2023-12-10 14:21:38 +02:00
loathingKernel
debb62c990
CloudSaves: On Windows, resolve the save path immediately if unset 2023-12-10 14:21:38 +02:00
loathingKernel
9a87e4e39f
RareLauncher: Fix crash when a false app_name argument is supplied 2023-12-10 14:21:37 +02:00
loathingKernel
ba65ffa905
Wine,WineResolver: Add more logging 2023-12-10 14:21:37 +02:00
loathingKernel
9a941e3001
Wine: Set environment through flatpak-spawn arguments
Partially fixes #305
2023-12-10 14:21:37 +02:00
loathingKernel
4350591411
Wine: Run commands through flatpak-spawn when in flatpak
Partially fixes #305
2023-12-10 14:21:37 +02:00
loathingKernel
ff2b9f2605
Rare: Update scripts to use the new entry point 2023-12-10 14:21:36 +02:00
loathingKernel
bdbb61d3a6
Rare: Move the different applications into their respective folders 2023-12-10 14:21:36 +02:00
loathingKernel
5f062830cf
RareLauncher: Enable terminate and kill buttons 2023-12-10 14:21:35 +02:00
loathingKernel
adf192e424
Rare: Version 1.10.7 (pre-release) 2023-12-10 13:52:33 +02:00
loathingKernel
5a2c9ae444
Lgndr: Handle exceptions in the unlock decorator 2023-12-10 13:47:07 +02:00
loathingKernel
9dd078aa92
Lgndr: match _handle_uninstaller signature 2023-12-10 12:18:50 +02:00
loathingKernel
e308686468
Revert "Lgndr: Add _login overload in core.py"
This reverts commit 8d0397415d.
2023-12-10 12:09:38 +02:00
loathingKernel
6daee29c24
Revert "Lgndr: Undo bind_ip changes"
This reverts commit 7979563cb5.
2023-12-10 12:09:26 +02:00
loathingKernel
2319c7c889
Rare: Release 1.10.6 2023-12-07 19:44:37 +02:00
loathingKernel
b60062d455
Code: Use vars() instead of directly accessing __dict__ 2023-12-07 19:40:16 +02:00
loathingKernel
509d33e1b7
MainWindow: Default to closing to tray to respect the default setting 2023-12-07 19:39:45 +02:00
loathingKernel
c2676eaa90
GameProcess: Don't spam with not found processes on startup 2023-12-07 19:39:07 +02:00
Stelios Tsampas
dab13748f3
About: Fix crash on version update check
Fixes: #330
2023-12-07 19:33:58 +02:00
loathingKernel
999d3bf7b8
Rare: Release 1.10.5 2023-12-05 00:26:59 +02:00
loathingKernel
70af132da1
EOSGroup: Check for 'user.reg' file to validate prefix path 2023-12-03 17:01:05 +02:00
loathingKernel
842bd27e8c
Rare: Release 1.10.4 2023-12-03 11:21:52 +02:00
loathingKernel
c56e7ce82c
RareGame: Moved some properties and methods to RareGameBase
These properties or methods were moved to RareGameBase
* `version`: For RareEosOverlay and maybe RareGameSlim
* `is_origin`: For RareGameSlim
* `install_path`: A partial Origin-unaware version
* `is_mac/is_win32`: For completeness

New methods
* `is_overlay`: For the download manager

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-12-03 11:21:52 +02:00
loathingKernel
a355339016
EGLSyncGroup: Resolve EGL manifest path on showEvent() 2023-12-03 11:21:51 +02:00
loathingKernel
8d0397415d
Lgndr: Add _login overload in core.py
Revert this commit once the new version of Legendary (`>0.20.33`) is released
2023-12-03 11:21:51 +02:00
loathingKernel
7979563cb5
Lgndr: Undo bind_ip changes
Revert this commit once the new version of Legendary (`>0.20.33`) is released
2023-12-01 13:22:35 +02:00
loathingKernel
9aae822295
Lgndr: Import legendary changes 2023-12-01 13:21:44 +02:00
loathingKernel
32859715d3
Lgndr: Use perf_counter in download (Rare only) 2023-11-30 12:51:39 +02:00
loathingKernel
f672a678c9
Paths: Detect when running though python -m rare 2023-11-29 13:25:04 +02:00
loathingKernel
3e7408ee8f
EGLSync: Update the widget when it is shown for the first time
* Don't hide irrelevant elements in Windows, disable them and use them as information
* Create the `Manifests` folder in ProgramData if its parent exists.
2023-11-29 13:16:52 +02:00
loathingKernel
a87f34163a
Skip widget updates on spontaneous events.
Spontaneous are events external to the application such as the window
manager showing or hiding the application. We don't want to update on those.
2023-11-29 12:50:39 +02:00
loathingKernel
c063f5f5b9
Library: Move image loading from RareCore to the GameWidget
Instead of loading images in the showEvent of the MainWindow,
load them in the showEvent of each widget. It seems to reduce
the startup stuttering this way. With some more work
we can only load the images for the widgets that are currently
visible and reduce the stutter even more.

At the same time, reduce the number of concurrent downloads
in the image manager and add a timeout so we won't halt.
The exception from the timeout is just logged at this point,
and the download is not requeued.
2023-11-29 12:50:02 +02:00
loathingKernel
c05209578c
InstallDialog: Fix install dialog not calculating available space
After the PathEdit change that stopped it from emitting the
textChanged signal when instatiated, the available space
calculation wouldn't take place, so do it when the dialog
becomes visible.
2023-11-29 12:47:56 +02:00
loathingKernel
ef07243677
IndicatorEdit: Set contents before connecting signals
Previously a lot of things would start running concurrently at
startup as we were setting up the UI. This removes a considerable
amount of perceived delay.

Note: there are better ways to make sure forms are populated when they
are viewed, such as each widget's `showEvent()`
2023-11-29 12:47:56 +02:00
loathingKernel
3b0c25e241
Widgets: Move PathInputDialog to rare/widget as a generic option
This widget is currently unused and could be deleted
2023-11-29 12:39:27 +02:00
loathingKernel
c0ac23b21d
Ubisoft: Update Ubisoft redemption widget to use RareCore
* Load and populate Ubisoft information when the page is shown instead of startup.
* List all Ubisoft games, and differentiate based on whether they been redeemed.
2023-11-28 17:15:45 +02:00
loathingKernel
05070919f3
GameWidget: Remove obsolete cloud saves code 2023-11-28 16:51:27 +02:00
loathingKernel
4726849403
LoadingWidget: Use @MultisampledNight 's animation
Thanks, UwU
2023-11-28 16:48:13 +02:00
loathingKernel
d6809c287e
RareCore: Fix a problem with dialogs spawning multiple times.
RareCore was connecting RareGames to the same signals
multiple times when the library was refreshed.
2023-11-28 16:38:03 +02:00
loathingKernel
110ea51ed6
DxvkSettings: Add compiler config option 2023-11-28 16:38:02 +02:00
loathingKernel
083094bcfc
Downloads: Code clarity 2023-11-28 16:38:02 +02:00
loathingKernel
f2c575e082
InstallDialog: Expose platforms in RareGame and use it
to populate the combobox
2023-11-28 16:38:02 +02:00
loathingKernel
43766c82a4
GameInfo: Enable Modify button only when the game has SDLs
Add icons to the DLC install/uninstall buttons
2023-11-28 16:38:02 +02:00
loathingKernel
d53eb92e53
Login: Remove spacer 2023-11-28 16:38:02 +02:00
loathingKernel
e4782b70ae
GameInfo: Add button icons 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
d2af82ae35
RareLauncher: Move class attributes to instance attributes.
Removed some superfluous variables that were already exposed through
RareGame and moved around some block to correct initialization errors
after moving to instance attributes
2023-11-28 16:38:00 +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
eb48a506d2
GameInfo: Add 'Modify Game' button to adjust selective downloads 2023-11-28 16:38:00 +02:00
loathingKernel
d11faa5263
ImageManager: Remove leading space 2023-11-28 16:38:00 +02:00
loathingKernel
adaf90f0a8
RareGame/RareCore: Add add_dlc method to connect a dlc with the main game
Move validation after the DLCs have been added so the can be uninstalled
too if the game can't be found.
2023-11-28 16:37:59 +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
ffqq
f38c751d43 feat: add freebsd support 2023-07-16 10:03:59 +03:00
lennard
da4163ced7
Bump version to 1.10.3 2023-06-11 15:53:07 +02:00
loathingKernel
b2722b6ceb
RareCore: Init default sections if they are not in the config file.
Fixes: #296
2023-06-11 13:40:00 +03:00
loathingKernel
1f06c87743
ImageManager: Few improvements
Check if there is a `keyImages` attribute before accessing it, and return
an empty list in case it isn't available. Fixes a recent crash with
`Prison Architect - eureka Update 1` DLC.

Exit early from `download_image` if the requested image is currently being
downloaded. This avoids multiple preparations and loading callbacks for
queued images.

Remove checking for supported OS when creating the icon. Now we create
icons in `icns` format for `Darwin` irregardless the fact we don't use them
for anything.
2023-06-05 01:33:11 +03:00
loathingKernel
605a5050af
RareGame: Make owned_dlcs a set
By making the attribute into a set, we avoid adding already existing dlcs
back into it when refreshing the library. Fixes duplicated entries in
the DLC page.
2023-05-29 16:40:45 +03:00
loathingKernel
5307932656
RareCore: Replace individual fetch workers with a single one.
The workers where co-dependent anyways as the non-asset worker
was started after the games worker had sent back its results.
By combining them we can move any data manipulations to the worker
and simplify the handling in RareCore.
2023-05-29 16:40:36 +03:00
loathingKernel
497bdc08cc
Downloads: Remove UNINSTALLING state on cancel 2023-05-29 15:49:52 +03:00
loathingKernel
eaed611c5f
GameDlcWidget: Respond to update signal
Using the update signal we can enable and disable the install/uninstall
button by querying the state of the RareGame
2023-05-29 14:32:30 +03:00
loathingKernel
d4c763296e
Downloads: Apply DOWNLOADING and UNINSTALLING states earlier
By applying the state earlier, we can implicitly avoid re-queuing
downloads.
2023-05-29 14:30:54 +03:00
loathingKernel
6b0bf9621d
GameDlcWidget: Fix crash when installing or uninstalling a DLC
When the user navigates to a different game info page, the dlc widgets
get deleted. Because the signal was connected to a lambda, the connection
wasn't severed upon deletion and once the DLC would finish downloading,
Rare would crash because the object with the piggyback signal was already
deleted. By using a dedicated slot to emit the signal we ensure that the
connction is severed at Qt object deletion
2023-05-29 03:04:43 +03:00
lennard
3acf289280
Update translations
and update config, so tx push works
2023-05-28 23:30:01 +02:00
lennard
875ba52768
Bump version to 1.10.2 2023-05-26 23:32:50 +02:00
loathingKernel
5ce9a2edfa RareCore: Handle exception when fetching non-asset games
https://discord.com/channels/826881530310819914/884510635642216499/1111321692703305729
There is a tab character in the appId of Fallout New Vegas: Honest Hearts DLC, this breaks metadata storage
on Windows as they can't handle tabs at the end of the filename (?)
Legendary and Heroic are also affected, but it completed breaks Rare, so dodge it for now pending a fix.
2023-05-26 19:11:58 +02:00
loathingKernel
737730583f ImageManager: Check if desktop icons are supported on current plaform
Before creating icons, check if desktop links are supported by Rare
on the current platform.

Fixes Dummerle/Rare#262
2023-05-14 22:13:12 +02:00
lennard
ae8cee76ae
Fix crash on launch helper exit 2023-05-08 18:58:49 +02:00
lennard
21a339b394
Finish french translation 2023-05-08 08:46:47 +02:00
loathingKernel
7218f0b696
ImportGroup: Add force import option.
When checked, the check for missing files will be skipped, allowing
for games missing too many files or their executable to be imported.
2023-05-07 16:33:08 +03:00
Stelios Tsampas
23c2f6dc0a RareGame: Return app_title as folder name if FolderName is not in customAttributes
Fortnite specifically doesn't provide `FolderName` in `customAttributes`, meaning we can't create the shortcut. If the attribute is not provided, assume that it is safe to use the application title.

Fixes: #283
2023-05-04 17:45:51 +03:00
lennard
3d0ebf702a
Bump version 1.10.1 2023-05-04 01:03:59 +02:00
loathingKernel
82128e35ca
RareCore: Use correct typing identifier 2023-05-03 17:27:36 +03:00
loathingKernel
184be66662
ImportGame: Pass app_name through the signal to resolve some information
Not working particularly well, since setting the path tries to auto-detect
the `app_name`, but it doesn't break anything either.
2023-05-03 17:27:36 +03:00
loathingKernel
4a96224dd3
GameInfo: Enable Import Game button, redirects to Import Game tab 2023-05-03 17:27:36 +03:00
loathingKernel
1c6a05c3f1
Refactor: Import ImageSize from widgets or directly from models 2023-05-03 17:27:36 +03:00
loathingKernel
0e4e7420cf
Refactor: Move ImageSize to models
`ImageSize` is a property of `ImageWidget` it is relevant to
`ImageManager` and the store widgets. So move it out of `ImageManager`.
2023-05-03 17:27:35 +03:00
loathingKernel
6986b1eab3
Rare: Apply UTC timezone info on dates 2023-05-03 17:27:35 +03:00
lennard
672bc814ba Fix import game 2023-05-03 12:32:12 +02:00
lennard
62aa78dcae Fix release-tests workflow 2023-05-03 12:32:12 +02:00
lennard
f8b38e0cb8 Fix desktop shortcuts on windows 2023-05-03 12:32:12 +02:00
lennard
ec6f24e3f8 Add tag to hide games from library 2023-05-03 12:32:12 +02:00
lennard
263af75853 Do not set available space text twice in install dialog 2023-05-03 12:32:12 +02:00
lennard
075443261d Show free space in install dialog 2023-05-03 12:32:12 +02:00
lennard
b6fc468681 Fix win-zip workflow 2023-05-03 12:32:12 +02:00
lennard
fb67c15622
Bump version to 1.10.0 2023-05-01 16:27:26 +02:00
lennard
5cfd3fffe3
Fix offline mode 2023-04-16 19:38:26 +02:00
lennard
30c3dadd4d
Update translations 2023-04-13 01:10:12 +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
lennard
a06dc7cd0f Use signal.disconnect without parameters 2023-04-08 01:03:14 +02:00
lennard
60da656877 Disconnect all game process signals before stop to prevent exceptions 2023-04-08 01:03:14 +02:00
lennard
b48e1603cb Add a signal handler to launch helper 2023-04-08 01:03:14 +02:00
lennard
f1fa0ada1a Open cloud save dialog after playing a game, if no action set on start 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
loathingKernel
fee96a5f9d
[RareGame] Apply state if the game is found to be running at startup 2023-04-06 23:41:23 +03:00
lennard
9644d45b23
Check if mangohud exists when enabling it 2023-04-05 17:51:36 +02:00
lennard
0186b4f3c4
Add documentation for is_non_asset
{'Windows': GameAsset(app_name='', asset_id='', build_version='', catalog_item_id='', label_name='', namespace='', metadata={})}
2023-04-05 13:32:35 +02:00
lennard
df1731de09 Fix key error for default mango hud settings 2023-04-05 13:09:34 +02:00
lennard
ea0f40bb41 Update game state, when saves updated 2023-04-05 13:09:34 +02:00
lennard
9233c28e5b Update loading widget 2023-04-05 13:09:34 +02:00
lennard
37a8a052c8 Add loading widget to cloud saves 2023-04-05 13:09:34 +02:00
lennard
0943d06820 Add class loadingWidget 2023-04-05 13:09:34 +02:00
lennard
3ec6a45cc3 Add double check for game assets and fix error in cloud save dialog 2023-04-05 13:09:34 +02:00
loathingKernel
849c98bee5
ProgressLabel: Use a centering procedure based on events
Previously the `setGeometry()` method was called explicitly. In this
procedure the self-centering widget installs an `eventFilter` on its
parent to react to `Resize` events of the parent.

This breaks centering on the list widgets a bit, pending an investigation
2023-04-04 13:34:33 +03:00
loathingKernel
e9b9f91df8
ImageSize: Include reference to the base image preset
"Base" refers to the preset used fetching and storing the image
2023-04-04 13:30:40 +03:00
loathingKernel
cfba81b2ec
SideTabContents: Add implements_scrollarea option
In case a widget uses its own scrollareas for dynamic resizing
(for example the store), setting `implements_scrollarea` to `True`
will avoid the encapsulating scrollarea of the container.
2023-04-01 21:29:30 +03:00
loathingKernel
dcb6bc7b98
GamesTab: Since the layouting is fixed, add a nice margin at the bottom 2023-04-01 00:55:42 +03:00
loathingKernel
74eb87b396
ImageSize: Add smaller size presets for wide images 2023-04-01 00:55:11 +03:00
loathingKernel
8de4213874
FlowLayout: Calculate sizeHint() based on the container.
Fixes `heightForWidth()` and layouting extending past what was required.

Remove dead code from LibraryLayout
2023-04-01 00:54:39 +03:00
loathingKernel
334e30dcc8
ImageWidget: Implement sizeHint() and minimumSizeHint()
Fixes inaccurate widget positioning
2023-04-01 00:53:00 +03:00
loathingKernel
28e6f02fc1
GameSettings: Emit signal when a non-editable row changes from the settings 2023-03-31 14:03:32 +03:00
loathingKernel
459828f1de
RareGame: Initialize steam_date and last_played to datetime.min
Due to some metadata corruption, metadata now gets locked before
being accessed
2023-03-31 14:02:01 +03:00
loathingKernel
639395c454
EnvVars: Re-enable key press handler
EnvVarsModel: Better vertical header icons
2023-03-31 02:42:16 +03:00
lennard
574e491cbf
Bump version 1.9.91 2023-03-31 00:16:04 +02:00
loathingKernel
42b9f581f6
GameInfo: Use QFormLayout instead of QGridLayout for the information
Also partition the space to left and right layouts, left layout being the
image and the space below it (pending future usage), and right the
information.
2023-03-30 12:50:42 +03:00
loathingKernel
8e6503758c
RareGame: Store steam grade and its fetch date in metadata 2023-03-29 18:02:48 +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
b1d438c34c
config_helper: Don't remove section when removing the last option
This is a synchronization nightmare as it is now,
so keep the section to avoid excessive checks.
2023-03-29 14:04:45 +03:00
loathingKernel
392ea81707
ProtonSettings: correctly access wine_groupbox 2023-03-29 14:02:46 +03:00
loathingKernel
afea6c54f6
GameSettings: Ignore override checks if the game is not installed 2023-03-29 14:01:57 +03:00
lennard
639d785bf1
Update version 2023-03-19 22:14:56 +01:00
lennard
c48a5ff2f8
Update version 2023-03-19 22:05:30 +01:00
lennard
bc69851639
Bump version 2023-03-19 21:45:49 +01:00
lennard
554d3557d3
fix auto sync saves 2023-03-19 20:23:44 +01:00
lennard
3874fac402
Sync saves when game finished 2023-03-18 16:14:01 +01:00
loathingKernel
748ff6d9ed RareCore: Detect if a game in saves is from another account.
And some cleanup
2023-03-18 14:42:46 +01:00
lennard
22b8992e55
Update translation_source.ts 2023-03-16 23:31:16 +01:00
loathingKernel
a768bce996
RareGame: export .egstore only after installing and successful verification 2023-03-16 18:07:33 +02:00
loathingKernel
c3231d9e17
Use object instead of ctypes.c_uint64 for signals that carry large ints 2023-03-16 14:04:12 +02: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
44590bb92b
Code cleanup
CloudSaves: don't save `save_path` in case it hasn't changed
IconGameWidget/ListGameWidget: Remove dead code
RareCore: add string translations
utils/paths: Use `AppDataLocation` instead of deprecated `DataLocation`
2023-03-16 12:38:33 +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
3236a4090c
RareGame: don't delete .egstore if the game is a DLC
VerifyWorker: use RareGame property to apply the verification check
to any DLCs
2023-03-15 21:20:52 +02:00
Stelios Tsampas
dc20293abb IndicatorLineEdit: Wrap edit_func inside the QRunnable 2023-03-15 18:25:32 +02:00
Stelios Tsampas
07c64b8b9b GameInfo: Fix enablement check 2023-03-15 18:07:20 +02:00
Stelios Tsampas
2ebc12b1f5 LgdnrCore: Add egstore_write and egstore_delete methods
`egl_unintall` and `egl_export` try to access EGL's programdata folder which raises an exception if the folder doesn't exist (Windows) or it isn't specified (Linux). Copy the relevant bits from LegendaryCore to LgndrCore and create two new methods that only manipulate the `.egstore` folder.
2023-03-15 17:59:33 +02:00
loathingKernel
ee6a129be8
RareGameSlim: Resolve save game again if dt_local is None
If the save path wasn't known at startup, dt_local will be None. This led
to the UI displaying wrong information about the local save. Detect that
case and resolve the save's status again.
2023-03-14 15:21:10 +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
loathingKernel
cf4835542d
IndicatorReasonsCommon: Add EMPTY reason 2023-03-14 13:12:42 +02:00
loathingKernel
18ebb6888f
InstallDialog: Allow for some special cases to install 0 size downloads
This specifically helps with games that have selectable downloads.
If we import a game with SDLs without any `install_tags` in the config
we will verify against the full game, meaning that files missing will
cause the verification to fail despite the game being correct. Since the
game is correct, resolving the download will result in a 0 size update.
This change will allow the InstallDialog to finish through the Install
button successfully despite having nothing to install.

On the `lgndr` side things are more complicated. Due to minor oversights
in legendary, the `install_tags` in the above example wouldn't be written
to the configuration file, causing a verification loop because the file
list wouldn't be filtered. To fix that, we also save legendary's config
file at the end of cleaning after a 0 size download.
2023-03-14 12:18:19 +02:00
loathingKernel
0cc521ba0b
RareCore: keep configuration when uninstalling a game at startup
We don't need to lose the `install_tags` or any other settings because
a disk might be not mounted.
2023-03-14 01:20:13 +02:00
loathingKernel
b7d499f3e1
RareGame: Add is_ubisoft property 2023-03-13 14:39:14 +02:00
loathingKernel
ec5bf7227b
RareCore: Move validation step after RareGame creation 2023-03-13 14:38:47 +02:00
loathingKernel
c6a9460044
GameInfo: Fix missin format() argument 2023-03-13 13:18:12 +02:00
loathingKernel
439475dcd1
Downloads: Update queues count at more occasions
Also count active download in the queues
2023-03-13 12:30:27 +02:00
loathingKernel
fee1f34451
ImportGroup: Rename button slot 2023-03-13 12:29:33 +02:00
loathingKernel
a7b85500f2
RareGame: Clean and export .egstore after updating igame
When importing a game, the first thing being checked for import information
is `<install_dir>/.egstore`. Due to erroneous handling, that directory can
contain multiples of `.mancpn` and `.manifest` files. This could lead to
importing an older version as legendary expects only one pair of these
files to exist in that directory.

The `.egstore` folder is normally updated/created as part of synchronizing
with EGL. To aid with importing games in the future, we always export this
data for Rare to be able to import games between different OSes
2023-03-13 12:29:04 +02:00
loathingKernel
a17ffe0426
CloudSaves: Set the labels to "None" even if save_path is not set 2023-03-13 01:11:15 +02:00
loathingKernel
e263523a76
ImportGroup: Constrain QStackedWidget from resizing when changing contents
Fix its size to the import button's size.
2023-03-13 00:58:16 +02:00
loathingKernel
97e34d6052
ElideLabel: Improve tooltip handling 2023-03-13 00:54:25 +02:00
loathingKernel
4fd723df2e
RareCore: Show progress while preparing RareGames 2023-03-13 00:04:11 +02:00
loathingKernel
c10bd59384
RareCore: Move installation validation into the post init phase
Specifically move it just before loading each game's pixmap. We need
the information set by `__validate_installed` to know which pixmap to
load
2023-03-12 18:59:58 +02:00
loathingKernel
a6b10a6ec4
RareGame: Don't emit widget.update in set_installed
`set_pixmap()` handles emitting `widget.update`
2023-03-12 18:57:30 +02:00
loathingKernel
fb1175ee04
Main: Trust shebangs. Fixes launching games on NixOS
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-03-12 15:38:18 +02:00
loathingKernel
801294b1ea
RareCore: Resolve grant date from entitlements at post init 2023-03-12 14:43:54 +02:00
loathingKernel
8a15691672
CloudSaves: Set age labels to "None" if game doesn't support cloud saves 2023-03-12 14:15:43 +02:00
loathingKernel
404ce26ec9
ElideLabel: Don't override tooltip if one is set externally 2023-03-12 13:38:10 +02:00
loathingKernel
16400da020
Clean-up 2023-03-12 13:19:24 +02:00
loathingKernel
f46dc2209d
RareCore: Move save game fetching into __post_init
Saves is another thing we can fetch later and interact to them becoming
available.
2023-03-12 13:09:09 +02:00
loathingKernel
85998023f0
RareCore: Add asynchronous loading in RareCore for origin and entitlements
Speeds up startup by moving non-essential information loading into a
worker that executes some time after the launch dialog has finished.
2023-03-12 12:44:43 +02:00
loathingKernel
f0ba7a7e45
RareCore: Rename RareCore.__games to RareCore.__library
Since RareGame can be both games and dlcs, use a generic name to avoid
confusion
2023-03-12 12:22:44 +02:00
loathingKernel
95c2b07d1e
ImageWidget: Don't try to paint the widget if painter is not active yet.
When the UI is being instantiated we might trigger some painting. This
squashes warnings in the output.
2023-03-12 12:19:46 +02:00
loathingKernel
4e1248a18a
RareCore: Move OriginWineWorker execution in load_pixamps()
We don't need to know if Origin is installed before launching the window,
so we can save on startup time by executing the worker after the window
has become visible.
2023-03-12 01:11:27 +02:00
Stelios Tsampas
b2f19852d0 CloudSaves: Allow path on Windows to not exist
Unlike Linux, we can be sure that the path is correct and it will be
created when the user downloads the saves.
2023-03-11 12:51:55 +02:00
loathingKernel
993b9fca17
CloudSaves: Better handling of changing between games and some UI cleanup 2023-03-11 02:05:41 +02:00
loathingKernel
fc015a4d30
RareGame: Update saves when a game exits 2023-03-11 01:32:04 +02:00
loathingKernel
3bacce78a2
IndicatorLineEdit: Simplify placeholder selection 2023-03-11 01:31:19 +02:00
loathingKernel
8a1dd6c948
RareCore: Sync back the results from OriginWineResolver into the main thread 2023-03-10 21:28:37 +02:00
loathingKernel
f83342aa14
UI: Fix over-layouting in SyncWidget 2023-03-10 18:23:26 +02:00
loathingKernel
81ec9bf772
RareCore: Fetch **ALL** saves during launch
To save time and requests, bulk get saves for all games and
load them into each respective RareGame.

Co-authored-by: Dummerle <44114474+dummerle@users.noreply.github.com>
2023-03-10 17:01:00 +02:00
loathingKernel
f6189772d0
WineResolver: Move common wine operations to rare/utils/wine
`rare.utils.misc.get_raw_save_path` has been removed in favor of the
equivalent `RareGame` property.
2023-03-10 17:00:55 +02:00
loathingKernel
3adabda1ba
ImageManager: Add OfferImageTall to the set of image types to look for
Seems like Epic are changing their API again, and some image types have been renamed. This made the list of updates to be empty after filtering it for image types we could handle. This also had the side effect of an infinite recursion when downloading images, as the resulting pixmap would be null.

To fix this situation, the new image type has been added, and the image loading in RareGame has become two methods, one for loading and one for setting it.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-10 10:35:31 +02:00
lennard
901f339415
Only auto sync in launch helper if enabled
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 22:29:53 +02:00
lennard
45ecaa39f3
Add sync worker to launch helper
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 22:27:02 +02:00
lennard
63e4223a96
Move slim RareGame to different file, to avoid circular import
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 22:14:19 +02:00
lennard
d42a631713
Add dry run argument to launch helper 2023-03-08 21:33:58 +02:00
lennard
b4586c9272
Delete unused classes GameUtils and CloudSaveUtils and move cloud save dialog to dialogs
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 21:33:24 +02:00
lennard
4ec1f39109
Update cloud widget, when state changed
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 21:22:38 +02:00
lennard
4b85ed8223
Cache all saves in a dict in api_results
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 19:15:32 +02:00
lennard
70960c73c4
Some ui improvements for cloud saves
- Show text on widget if save is not up-to-date
- Fix text in game info -> cloud saves

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 18:54:27 +02:00
lennard
189167f4f7
Add upload and download function to RareGame
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-08 18:34:26 +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
92346e11d0
OriginWineWorker: Execute during launch and properly resolve paths for Wine 2023-03-07 23:43:42 +02:00
lennard
d399382afd
Fix origin stuff on windows
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:23 +02:00
lennard
efc07e4645
Add install size for origin games and move it to thread on windows
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:23 +02:00
lennard
32de2c21a1
Move registry reader for origin games to a worker
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard
eec3dfeb1e
Fix some rebase errors
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard
1938bd7084
Fix is_foreign()
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard
2258d87c83
Cache registry files for performance
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard
1ac1fd89f8
Show install path for origin games in game info
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:22 +02:00
lennard
b926dd112c
Enable origin install check on linux and add some performance improvements for linux
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:21 +02:00
lennard
9733e119c9
Show install path for origin games in game info
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:21 +02:00
loathingKernel
91a7247573
RareCore: Remove Win32Worker and MacOSWorker
They weren't required as the asset information are already fetched in
`GamesWorker`. They were a remnants of `ApiResults`.
2023-03-07 17:11:21 +02:00
loathingKernel
5748d0e6ee
RareCore: Manage initialization in RareCore instead of LaunchDialog
This is the last change of the `backend_refactor` branch. This makes
`RareCore` the centerpiece of Rare by moving initialization before the UI
is brought up. RareCore is now in control of creating and querying `RareGame`
objects, re-introducing the ability (incomplete) to refresh the games library.
As a result, ApiResults has been removed.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-03-07 17:11:21 +02:00
loathingKernel
9d4e0995fd
RareAppException: Create exception handler that can show a dialog
The reason is that `sys.excepthook` is a global attribute which we
have to unset for threads because we show a Qt dialog in it and we
can't do that from threads. Before this change, we used to unset
it in threads, but since it is a global attr, that was unsetting it
for the whole application. We cannot reliably reset it because we
can have multiple threads executing and there will be race conditions.

To fix this situation, `RareAppException` implements a callback to
be patched into `sys.excepthook` which emits a signal to be serviced
by the the `RareAppException` instance in the main thread.
`RareAppException` can be subclassed to implement the
`RareAppException._handler` method for domain specific handling.

The `RareApp` base class instantiates its own `RareAppException`
instance for early basic handling. `RareAppException` is subclassed
into `RareException` and `RareLauncherExcpetion` in `Rare` and `RareLauncher`
respectively to implement the aforemention domain specific handling.
Each of these classes deletes the previous instance and replace it
with their specialized handlers.
2023-03-07 17:11:21 +02:00
loathingKernel
dea01ae24b
RareGame: Origin games should be able to launch despite not being installed 2023-03-07 17:11:20 +02:00
loathingKernel
786fa2c59f
WaitingSpinner: center contents 2023-03-06 00:39:23 +02:00
loathingKernel
e55c40448c
Misc: rename get_size to format_size 2023-03-06 00:39:23 +02:00
loathingKernel
958de1b3b5
Console: handle Esc key through closeEvent() 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
76a616615b Resources: Move some more stylesheets into the static CSS 2023-03-03 14:16:04 +02:00
loathingKernel
372b276157 [Icon/List]Widget: Disable focus on buttons
When the button gets clicked on, it receives keyboard focus. Disabling the button
afterwards leads to `focusNextChild` getting called. This makes the scrollarea
trying to ensure that `nextChild` is visible, essentially scrolling to a random widget
2023-03-02 19:57:31 +02:00
loathingKernel
1dd8856a29 Resources: Add static stylesheet for widgets that need special handling irregardless of theme
The static stylesheet properties are always applied. If there is a theme
stylesheet to be applied, they are appended in the end of the theme
stylesheet.

This removes stylesheet properties from the library widgets, some special
buttons and the queue worker labels.

To update the static stylesheet first edit `rare/resources/static_css/stylesheet.py`
and then execute it as a script.
2023-03-02 15:36:45 +02:00
loathingKernel
46664f3577 Fix a few minor errors 2023-03-02 01:05:53 +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
1842ec138e App: Rename rare_core attr to rcore
Makes it equal to the rest of the application

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-27 23:47:24 +02:00
loathingKernel
ecee2e24e5 QueueInfoWidget: Set ellipsis text even without an old InstalledGame 2023-02-22 21:43:00 +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
a3d09ae288 Code cleanup: Use pass instead of ellipsis (...) for abstractmethods
Fix a few other issues pointed out by MultisampledNight

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-20 15:31:04 +02:00
loathingKernel
7a04f7b5be DownloadsTab: Replace n/a with ellipsis 2023-02-20 14:58:22 +02:00
loathingKernel
00a0b36e75 LaunchDialog: better layout name 2023-02-20 14:58:01 +02:00
loathingKernel
c2da5bceb8 QueueWidgets: Re-text Update now to Download now
Also rename the widget classes and files for clarity
2023-02-20 14:52:45 +02:00
loathingKernel
3e827f4ece ElideLabel: Enable word-wrapping for elided labels.
Word wrapping allows ElideLabel to resize first inside flexible sized
areas such as the contents widget of a scrollarea. This allows the contents
widget to properly resize itself to avoid horizontal scrolling.

Word-wrapping also enables the widget to resize vertically. To avoid that
ElideLabel is set to a fixed height based on font metrics. An overloaded
method `setFixedHeight` has been added to disable it when desired.

EglSyncGroup: Replace estimated path label with a ElideLabel because
the displayed message was expanding the scrollarea.
2023-02-20 14:26:14 +02:00
Stelios Tsampas
05e538ca5c
Update rare/components/tabs/downloads/groups.py
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-02-20 11:32:48 +02:00
Stelios Tsampas
ca3a2893f9
Update rare/components/tabs/downloads/__init__.py
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-02-20 11:32:28 +02:00
Stelios Tsampas
e748468078
Update rare/components/tabs/games/game_info/move_game.py
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-02-20 11:31:03 +02:00
Stelios Tsampas
cda4668486
Update rare/components/tabs/games/game_widgets/game_widget.py
Co-authored-by: multisn8 <contact@multisamplednight.com>
2023-02-20 11:28:53 +02:00
loathingKernel
4ef73b48ef Dialogs: Homogenize dialog titles 2023-02-18 19:36:49 +02:00
loathingKernel
e6c703f873 ExtraWidgets: Cleanup some code 2023-02-18 18:16:29 +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
97def45a7e Cleanup: Remove some unused imports 2023-02-18 17:27:18 +02:00
loathingKernel
f8c0ffd938 ExtraWidgets: Copy SideTab widgets into their own file
The new file is unused at the moment
2023-02-18 16:44:09 +02:00
loathingKernel
2d0f7aa51d ExtraWidgets: Copy IndicatorLineEdit and PathEdit into their own file.
The new file is not used at the moment.
2023-02-18 16:40:30 +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
7e4ded70b5 MoveGamePopUp: Don't translate or do any text formatting in path_edit callback function 2023-02-17 13:29:59 +02:00
loathingKernel
da49a91a03 Utils: return correct value type string for get_size() 2023-02-17 13:23:44 +02:00
loathingKernel
922b1472dd IconWidget: Fix typo in install_btn css selector 2023-02-17 10:49:34 +02:00
loathingKernel
9b856e5f8e InstallDialog: Allow downloading 0 size DLCs
There are DLCs (for example KingletAztec) which are essentially
entitlements, a single file the allows access to already downloaded
content. Updates for such DLCs only change the metadata version number
without any actual new data. These DLCs are handled correctly by the
DLM, but our dialog would refuse to allow installing them due to 0 download
size. This change allows them to pass through the InstallDialog.

The other issue, which I don't know if it was only a result of our faulty
validation at startup or could occur in legendary too, is that a DLC might
be marked with needing verification. Currently we don't have a way of
verifying DLCs, so when verifying the game, we will also set the same
state for any installed DLCs. In effect verifying the game successfully
will also mark any DLCs as correct.
2023-02-17 10:37:44 +02:00
loathingKernel
e9cbdb22bc RareCore: add dequeue_worker() method to RareCore
It will "properly" remove a worker and update the connected widgets.
2023-02-16 17:07:02 +02:00
loathingKernel
b405ff615e RareCore: Return a list instead of an iterator to freely use remove() 2023-02-16 16:42:32 +02:00
loathingKernel
d8c31a05c2 GamesTab: Remove timing debug message 2023-02-16 16:22:31 +02:00
loathingKernel
5593dfb984 MainWindow: Don't wait for the workers to finish.
Instead ask the user if the queue should be cleared and return to normal execution.
2023-02-16 16:19:52 +02:00
loathingKernel
e40cfaafac MainWindow: Implement worker queue in status bar
The active workers are placed in a static container on the left side.
The queued workers are placed in a scrollarea on the right side of the
status bar. The scrollbars are disabled but dragging works.

Exiting with active workers will pop up a message for confirmation. Rare
will clean the queued workers but the active ones will be waited on until
they finish.
2023-02-16 10:52:13 +02:00
loathingKernel
f2dedaaefc ElideLabel: Set text on resizeEvent 2023-02-16 10:47:23 +02:00
loathingKernel
a438eb764b MoveGamePopUp: Don't refresh indicator on widget.update 2023-02-16 10:46:47 +02:00
loathingKernel
e34800cfd3 LibraryWidgets: Remove unused code and use multiline f-strings for css text 2023-02-15 20:40:20 +02:00
loathingKernel
0bd7af3d77 MoveGamePopUp: Use ElideLabel for the warning 2023-02-15 19:58:28 +02:00
loathingKernel
6e4081177d VerifyWorker: Remove unused imports 2023-02-15 19:49:04 +02:00
loathingKernel
efcbea91cf MoveGamePopUp: Make the warning label always visible 2023-02-15 19:48:48 +02:00
loathingKernel
6c0663771c GameInfo: Make widgets react to changes from RareGame's widget.update signal
Note: the `__update_widget()` method, while it doesn't have any visible delay
has the potential for improvement. I didn't do it because it felt like
premature optimization.

MoveGamePopUp: update it to use RareGame and it's signals

RareGame: Add `install_path` attribute and change `needs_verification` setter
Now both setters will update the local `igame` attribute and save it too.

MoveWorker: Update it to use RareGame.
Other changes include moving "same-drive" moving into the worker and using
`os.path` methods instead of `PathLib`

SteamGrades: Remove worker, it is implemented in RareGame now.
2023-02-15 16:59:33 +02:00
loathingKernel
034c6f2ade ImageManager: Increase margin on desktop icons
Add size presets for wide covers
2023-02-14 10:21:38 +02:00
loathingKernel
9f408772e3 RareGame: Resolve and cache steam grade 2023-02-14 10:20:59 +02:00
loathingKernel
abba86e10b RareGame: Create intermediate class RareGameSlim between RareGameBase and RareGame
The `RareGameSlim` class is useful mostly in the Launcher as it doesn't
depend on `ImageManager`. I should hold anything required by the Launcher.
2023-02-09 01:37:53 +02:00
loathingKernel
c0d9e5c845 ImageSize.Preset: Add equality test 2023-02-08 17:09:24 +02:00
loathingKernel
31757840f0 Paths: Use common dictionary for suffixes 2023-02-08 16:47:46 +02:00
loathingKernel
71aa440e0b GameWidget: Use __slots__ to satisfy forward ui declaration
This way `ui` won't get any typing but this is internal and we can
take care of it until a better method is found to satisfy both.
2023-02-08 15:14:50 +02:00
loathingKernel
f2490f065b RareGame: Create common base class for RareGame and RareEosOverlay.
It contains some common methods as well as the `State` enumeration
and the `Signals` class.
2023-02-08 15:13:02 +02:00
loathingKernel
b36dfdd2c6 ImageManager: Generate shortcut icons when fetching cover images. 2023-02-08 15:08:55 +02:00
loathingKernel
97adb6e1c2 UninstallWorker: Use new shortcut functions to delete shortcuts in uninstall_game 2023-02-08 01:50:00 +02:00
loathingKernel
359157fac3 RareGame: Add property to get the unprocessed save path 2023-02-07 16:02:04 +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
2903c19667 Code cleanup 2023-02-07 13:06:08 +02:00
loathingKernel
34a13ea3b2 ApiResults: Mirror the way RareCore from refactor_backend handles non asset items
`LegendaryCore.get_non_asset_library_items()` returns the same tuple
for `game_list, dlc_dict` as for regular games with assets, so
keep the result for API completeness, since `RareGame` can handle those
games properly.
2023-02-07 13:04:33 +02:00
loathingKernel
c83ee69914 GamesTab: Populate RareGame.saves at creation based on ApiResults
Remove unused attributes and clean layout code.
2023-02-06 09:45:30 +02:00
loathingKernel
59f5370bef LaunchDialog: Retrieve entitlements in a worker 2023-02-06 09:20:25 +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
loathingKernel
34839d469e Update/QueueGroups: Initialize with hidden container. 2023-02-05 19:41:08 +02:00
loathingKernel
15b80ce72f GamesTab: Move installed and uninstalled signal connection inside LibraryController 2023-02-05 19:14:51 +02:00
loathingKernel
ac4060d804 RareGame: Set state before emitting the widget.update signal 2023-02-05 19:13:38 +02:00
loathingKernel
1bbba07c24 RareCore: Mangle _instance class attribute 2023-02-05 19:12:50 +02:00
loathingKernel
f9b5385513 DownloadsTab: Paint the background of the active download stats with the image of the game
The Qt Designer UI file for the downloads tab was removed since
the tab is simple enough to be implemented in code now.
2023-02-05 19:12:14 +02:00
loathingKernel
6ee6ce5255 UI: Remove unused store UI files 2023-02-05 19:00:01 +02:00
loathingKernel
c0b98978f1 QueueGroup: Also update movement arrows when a widget is deleted 2023-02-04 17:38:07 +02:00
loathingKernel
f2745a9551 RareGame: Disable erroneous pylint errors 2023-02-04 17:38:07 +02:00
loathingKernel
09b909cc32 MoveWorker: Fix Undefined variable 'logger' 2023-02-04 17:38:07 +02:00
loathingKernel
b2b3598a0b MainWindow: Add worker queue to the statusbar 2023-02-04 17:38:07 +02:00
loathingKernel
6b3a841378 Refine QueueWorker and implement worker_info for VerifyWorker and MoveWorker 2023-02-04 17:38:07 +02:00
loathingKernel
38710a0af1 DownloadsTab: Use is_idle 2023-02-04 17:38:07 +02:00
loathingKernel
6800b7e9ab Workers: Implement wrapper QueueWorker class prototype for queueable workers
RareCore: Impelement base worker queue
2023-02-04 17:38:07 +02:00
loathingKernel
07ef43b13e Workers: Use a wrapper class that deletes the signals QObject before exiting 2023-02-04 17:38:07 +02:00
loathingKernel
28e68cad97 MoveWorker: Move worker into rare/shared/workers 2023-02-04 17:38:07 +02:00