1
0
Fork 0
mirror of synced 2024-06-02 18:54:41 +12:00
Commit graph

1048 commits

Author SHA1 Message Date
loathingKernel a605bddffa RareGame: Move sdl_name to RareGameBase
InstallDialog uses that property so RareEosOverlay should have it too.
Also calculate the base_path for the overlay case instead of passing it as
argument
2024-01-19 12:09:57 +02:00
loathingKernel 7ae06ff5d8 RareCore: Move entitlements request into an independent worker
Yes, we are back at this. Entitlements are important to have early
as Ubisoft redemption requires them, and they don't depend on anything
else.

* Move config helper initialization into RareCore to make it available
earlier.
2024-01-19 01:28:10 +02:00
loathingKernel 89486f882e EOSGroup: Add the option to select which overlay installation to enable 2024-01-19 00:57:16 +02:00
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 a246f4ee16 EosGroup: Remake the UI and integrate with Rare's facilities
* Uninstalling the Overlay now goes through the same procedure as
uninstalling any other game.

* The available prefixes are now listed instead of hiding them inside
a combo box.

* Each listing works indepedently to enable/disable the Overlay for the prefix
2024-01-19 00:57:16 +02:00
loathingKernel 971c31e8f4 SelectiveWidget: Create specialized widget for selecting optional downloads
Because there are two dialogs for editing optional downloads, refactor
the separate implementations to select them into a common reusable widget
and use it in SelectiveDialog and InstallDialog.
2024-01-18 16:44:47 +02:00
loathingKernel 0fb1526d67 MoveDialog: Refactor MovePopup into a dialog using ActionDialog as base 2024-01-02 23:11:47 +02:00
loathingKernel d3ec79378e UninstallDialog: Refactor to use ButtonDialog as base 2024-01-02 22:31:25 +02:00
loathingKernel 339fec2bca CloudSaves: don't error if the saves directory already exists 2024-01-02 18:04:08 +02:00
loathingKernel 80ac9296fc Rare: cherry-pick some sourcery suggestions 2024-01-02 17:57:02 +02:00
loathingKernel 89c1a4eaf4 Launcher: Refactor cloud sync dialog to use ButtonDialog base class 2024-01-02 17:38:51 +02:00
loathingKernel 534c45818a GameInfo: Update button description strings and icons 2024-01-02 15:34:35 +02:00
loathingKernel c7336ad04a InstallDialog: Use ActionDialog base class 2024-01-02 15:12:07 +02:00
loathingKernel fd22d831eb Rare: refactor timer names 2024-01-02 11:18:31 +02:00
loathingKernel 456050c91c RareException: Use quit() instead of exit() 2024-01-02 11:18:18 +02:00
loathingKernel 6e1a7cdbaf Merge branch 'sdl_dialog' into next 2023-12-31 18:44:41 +02:00
loathingKernel e467dc996c GameDlcWidget: Dynamically load DLC cover image on show 2023-12-31 17:59:11 +02:00
loathingKernel e421d02a4f Update SDL dialog 2023-12-26 00:05:11 +02:00
loathingKernel 62e19a8be2 VerifyGame: Present a dialog to select selective downloads in the game
supports them.
2023-12-25 23:56:37 +02:00
loathingKernel 600441a614 Rare: Import platform specific modules only on said platforms 2023-12-24 21:08:26 +02:00
loathingKernel 870aeea748 EOSGroup: Use UI membership instead of double inheritance 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 616df235cd ListWidget: Use line variant for qta icon 2023-12-24 21:08:26 +02:00
loathingKernel 400625975d Dialogs: Re-implement Launch and Login dialogs on top of a few common super-classes
To keep dialogs in a common format and allow them to share the same
properties, three classes of dialogs have been implemented inheriting from
each other.

The classes are `BaseDialog` -> `ButtonDialog` -> `ActionDialog`

* Basedialog: is the basis of all dialogs and is responsible for
rejecting close requests from the window manager and the keyboard.
It also restricts access to `exec()` and `exec_()` because they are harmful.
It serves as the basis of Launch and Login dialogs

* ButtonDialog: is offering buttons for accepting or rejecting the presented
option. It implements its own buttons and exposes abstract methods to
implement handling in them. It restricts access to `close()` because these
dialogs should always product a result.
It is the basis of Uninstall, Selective dialogs.

* ActionDialog: in addition to the ButtonDialog, it offers an action buttom
with to validate the form or to make the dialog unable to close. It serves
as the basis of Install and Move dialogs.
2023-12-24 21:08:26 +02:00
loathingKernel 51904efa90
GameWidget: Request pixmap in paintEvent.
Requesting the pixmap in `paintEvent` only loads the
pixmap when the widget first becomes visible, making loading
the library smoother. Also avoid spawning multiple singleshot
QTimers and use QObject's internal timer, with CoarseTimer precision.
2023-12-23 13:46:12 +02:00
loathingKernel 6d3dd3784e
RareCore: Temporarily disable automatic egl sync and remove UI option.
Also set some more defaults for legendary because Rare lacks support for
them. Forced at startup.

* Set `disable_auto_crossover` to `false` because we don't support CX yet.
* Set `egl_sync` to `false` because issues.
2023-12-23 13:38:29 +02:00
loathingKernel b039f9e06c
LaunchDialog: allow legendary to check for updates in its own way 2023-12-19 11:46:13 +02:00
loathingKernel 85d29372d4
GameSettings: Hide proton settings on macOS 2023-12-17 19:34:37 +02:00
loathingKernel 32565b3a9c
HeadBar: Update some strings 2023-12-17 01:28:56 +02:00
loathingKernel dfa60aa99f
ImportGroup: Add platform selection when importing games.
If we are importing multiple games, default to importing the native platform
if the game supports it, otherwise fallback to the Windows platform
2023-12-17 01:20:07 +02:00
loathingKernel c9264c732e
HeadBar: Default to Mac games fitler on macOS 2023-12-16 21:57:09 +02:00
loathingKernel 1cf53e3b54
Library: Filter unreal engine entries expect for the dedicated option 2023-12-16 20:26:56 +02:00
loathingKernel 5f5e471169
RareGameBase: Add default_platform property
This property reports the default platform to use for a game based
on legendary's configuration and if they platform is available in the
game's assets.

Using that property we can make better choices on what platform to operate
on without user intervention. Currently we use it to infer the platform
in when installing, importing, and calculating game versions.
2023-12-16 14:02:53 +02:00
loathingKernel 0bd34af720
ImportGroup: calculate correct install dir when importing game 2023-12-16 01:28:37 +02:00
loathingKernel 6249e56849
InstallDialog: Oooooooof.gif
* Infer the displayed to reflect where the affected directory is
  If base_path is set outside of InstallDialog, display that.
  If the game is already installed, show the installation directory
  If neither of the above is true, use legendary's inference based on
  the default platform if the game supports it. Fallback to Windows.

* Disable irrelevant and potentially harmful options when the game is
  already installed, such as the installation path, the platform selection
  and creating a shortcut.

* Infer the correct platform based on the existing installation. If it
  is not installed, use the default platform if the game supports it and
  fallback to windows.

* Move the horrible lambda used to populate the error box when the
  platform was unsupported into a separate method.
2023-12-16 00:49:51 +02:00
loathingKernel db588ed4e2
Use legendary's installation directory inference 2023-12-16 00:40:15 +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 cada2ae985
ImportWorker: Use default platform when importing, fallback to Windows if there is no assets for the platform 2023-12-15 17:56:33 +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 687218d29b
RareGame: Return values only from Game for app_name and app_title
With launchable DLCs we will need to replace the InstalledGame in the
DLC with the InstalledGame from the base game so depend these properties
solely on the Game attribute. Furthermore, since we do not need backwards
compatibility any more, remove the `title` property and rename its uses
to use `app_title`
2023-12-14 23:08:29 +02:00
loathingKernel dfa12a0138
IconGameWidget: Make icons slightly smaller by using the Library preset
Previously the Display and Library presets were equal. Make the
icons smaller by making the Library preset ~75% of the Display.preset
2023-12-14 13:57:22 +02:00
loathingKernel cfbb6ea578
GamesTab: Initialize when first shown. 2023-12-14 13:57:04 +02:00
loathingKernel 5abae7ee16
FlowLayout: Fix overlapping widgets and remove default arguments 2023-12-14 00:49:22 +02:00
loathingKernel 9de5627be3
SideTabContainer: Set size policy for the container scrollarea container widget 2023-12-12 14:43:41 +02:00
loathingKernel 490f0dc69f
Shop: Rename module to store 2023-12-12 13:02:07 +02:00
loathingKernel 83dd118784
ShopWidget: The shop is broken, set it only show the free games and the wishlist 2023-12-12 12:48:43 +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 6c0a92966e
GameSettings: Properly find row to insert widgets. 2023-12-12 01:23:19 +02:00
loathingKernel d563421391
EGLSyncGroup: Properly find the correct rows to insert widgets 2023-12-12 01:23:18 +02:00
loathingKernel b5a18f2858
ImportGroup: Properly find the row when inserting path_edit and app_name_edit 2023-12-12 01:23:18 +02:00
loathingKernel 3ce62facd2
InstallDialog: Properly find the the row when inserting install_dir_edit 2023-12-12 01:23:17 +02:00
loathingKernel 8e1a3c8c73
LoginDialog: Calculate a fixed height for the login stack based on width
* Properly find row to insert sid_edit into
* Use lazy evaluation for logging
* Clean the login forms by using separate layouts for the interactive fields
2023-12-12 01:23:17 +02:00
loathingKernel 0ec80e5678
LoginDialog: Set minimum size in a way that avoids resizing on changing widgets
The forms were updated to be more informative and easier to read.

NOTE: The reason the form is bigger than the contents is because the
QLabels have word-wrapping enabled and as such they substitute width
for height (`hasHeightforWidth`)
2023-12-12 01:23:16 +02:00
loathingKernel 8c83f8aa23
InstallDialog: Add install_dir_edit widget without using an extra layout 2023-12-12 01:23:15 +02:00
loathingKernel 38cc1f34a2
ImportGroup: Update the form when each time it is shown
Reduces startup time and outdated information in the completer/checks.
2023-12-10 23:43:46 +02:00
loathingKernel e1c1d01958
ImportGroup: Use get_boolean_choice factory insteand of lambda 2023-12-10 22:44:19 +02:00
loathingKernel df0f7603f2
ImportGroup: Don't enable the Import Game button if import is running 2023-12-10 22:12:17 +02:00
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 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 b20be46752
InstallDialog: Offer to install prerequisites on native platforms 2023-12-10 14:22:27 +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 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 debb62c990
CloudSaves: On Windows, resolve the save path immediately if unset 2023-12-10 14:21:38 +02:00
loathingKernel bdbb61d3a6
Rare: Move the different applications into their respective folders 2023-12-10 14:21:36 +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
Stelios Tsampas dab13748f3
About: Fix crash on version update check
Fixes: #330
2023-12-07 19:33:58 +02:00
loathingKernel 70af132da1
EOSGroup: Check for 'user.reg' file to validate prefix path 2023-12-03 17:01:05 +02:00
loathingKernel a355339016
EGLSyncGroup: Resolve EGL manifest path on showEvent() 2023-12-03 11:21:51 +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 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 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 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 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 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
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
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
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
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 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 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 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
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
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 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 dcb6bc7b98
GamesTab: Since the layouting is fixed, add a nice margin at the bottom 2023-04-01 00:55:42 +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 639395c454
EnvVars: Re-enable key press handler
EnvVarsModel: Better vertical header icons
2023-03-31 02:42:16 +03: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 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
loathingKernel afea6c54f6
GameSettings: Ignore override checks if the game is not installed 2023-03-29 14:01:57 +03: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
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
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
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 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 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