1
0
Fork 0
mirror of synced 2024-06-29 19:51:02 +12:00
Commit graph

875 commits

Author SHA1 Message Date
loathingKernel e7a47a48e1 Add typing to the custom layouts and fix stacked widet page naming 2023-02-04 17:38:07 +02:00
loathingKernel 25def92a41 TabWidget: Don' add store and download shortcuts when offline 2023-02-04 17:38:07 +02:00
loathingKernel a8bc418e42 Reference tabs by their returned indices instead of hardcoded numbers 2023-02-04 17:38:07 +02:00
loathingKernel 96c833be64 GameInfo: Fix list to boolean conversion
SideTabBar: Add padding option
2023-02-04 17:38:07 +02:00
loathingKernel de273cbe20 WrapperSettings: Move class variables into instance variables 2023-02-04 17:38:07 +02:00
loathingKernel 406c018f29 GameInfo: Enable DLC tab only when the game is installed 2023-02-04 17:38:07 +02:00
loathingKernel 2ef70b8eb4 InstallQueueItemModel: Refactor to add an expiration date to the download
While not sure if it is required, add an expiration date to the prepared
download 30 minutes after it was prepared. If a download has been in the
queue for more than 30 minutes, the download will be prepared again silently
before starting.

Return only the `InstallOptionsModel` in the result of the download thread
to avoid the potential mistake of re-using it. This required for the tray
notification signal to operate on the `app_name` instead of the `app_title`.
As a result, the notification slot was moved into the TrayIcon class for
better encapsulation.
2023-02-04 17:38:07 +02:00
loathingKernel 90021e34f2 RareGame: Add enqueue and dequeue signals
They are used to insert and remove updates from downloads when
the installation of a game changes through `RareGame.set_installed`.
They piggy-back the signals with the same names in `GlobalSignals`

When importing a game from EGL, also check
2023-02-04 17:38:07 +02:00
loathingKernel 523391d166 QueueWidget: Prepare requeued downloads after adding it.
By preparing the download inside the widget, the delay after stopping
the running download and visual feedback of adding the widget is
reduced. The widget will now appear containing the basic information
and will be populated with the information about the download
when it is ready. The widget is disabled in the meantime.

Move `InstallInfoWorker` to `rare.shared.workers` module and
revert it to emitting a `InstallDownloadItem` model only
instead of a `InstallQueueItemModel.`
2023-02-04 17:38:07 +02:00
loathingKernel 0830c17ee5 ImportGroup: Add progress reporting in the form 2023-02-04 17:38:07 +02:00
loathingKernel a96a51f110 DowloadsTab: Emit a signal from each group on widget deletion to avoid counting to-be-deleted widgets 2023-02-04 17:38:07 +02:00
loathingKernel c219f347d1 ImportGroup: Fix missing text due to ElideLabel change 2023-02-04 17:38:07 +02:00
loathingKernel 304ad0388e GameDlc: Re-write the form to use a QToolBox instead of two separate QGroupBoxes.
By using a QToolBox, we can better utilize the available space for
long lists of DLCs. `GameDlcWidget` is now responsible for handling
installing and uninstalling the DLC based on RareGame's functionality.

Since `GameUtils` is not used for uninstalling any more, remove it the
arguments of `GameInfoTabs` completely.
2023-02-04 17:38:07 +02:00
loathingKernel 84694a68a8 UpdateGroup/QueueGroup: Use the QObject's destroyed signal to toggle visibility of labels and containers
The widgets are not destroyed immediately so toggling based on
counting children in containers didn't work while in the same function.
Using the `destroyed` signal makes it clear when the change should happen.
2023-02-04 17:38:07 +02:00
loathingKernel cf5332004a Add name inference based on type in widget_object_name 2023-02-04 17:38:07 +02:00
loathingKernel a26b977bda Fix a few issues around refactoring the stylesheets.
Properly set object names for install and uninstall buttons in dialogs
Change margins on widgets that are put into scrollareas
Add top margin only on checkable QGroupBox
Remove padding from QToolBox
2023-02-04 17:38:07 +02:00
loathingKernel 9e077f74ed Stylesheets: Refactor css widget selectors based on objectName()
The `objectName()` of onstall and uninstall buttons should be set
to `InstallButton` and `UninstallButton` respectively for them to
pick up their special CSS properties.

Make QToolBox tab text bold

Clean-up deprecated widget object names in the CSS
2023-02-04 17:38:07 +02:00
loathingKernel 020d225f97 InstallDialog: Make as modal when not silent to block input 2023-02-04 17:38:07 +02:00
loathingKernel c523fa9210 UpdateGroup: Keep updates' app_names in a list too.
Because `deleteLater()` doesn't delete the widget immediately (duh!)
`count()` and `contains()` can report false results while the widget
is queued for deletion.

Hide container and list/queue by name mangling.

Remove test code.
2023-02-04 17:38:07 +02:00
loathingKernel 65c56bd366 ImportGroup: Handle each imported game as soon as it ready
Emit and handle the each imported game with the progress signal.
The result signal still handles showing the summary of the
process to the user
2023-02-04 17:38:07 +02:00
loathingKernel 1959516b3f GameWidget: Toggle buttons on widget update
ElidedLabel: Use `sizeHint()` for width

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel fc7e45a43a UninstallDialog: Implement it to work similarly to InstallDialog
Similarly to the installation procedure, when an uninstall is
requested, an `UninstallOptionsModel` is emitted by the `RareGame`.
`DownloadsTab` handles the signal and spawns the `UninstallDialog`.
After the `UninstallDialog` is closed, a worker thread handles
uninstalling the application to avoid UI lock-ups when a large
number of files is deleted.

Allows for uninstall actions to be spawned from anything having
access to the `RareGame` instance.

LaunchDialog: Don't check health on DLCs, they always will require
verification if they don't specify an executable.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel b02483eb80 GameInfo: Refactor the move game stack to re-use the existing widgets
instead of adding them again to the layout. Move game should still
switch to RareGame, similar to the way it works for verifing.

Also add non-functional "Import Game" button
2023-02-04 17:38:07 +02:00
loathingKernel 915c41309d GameWidgets: Remove GameUtils from GameWidgets
Also remove attributes tracking the state of each application, those
are handled by `RareGame`

Temporarily disable save syncing related code, pending the move to
the game launcher process
2023-02-04 17:38:07 +02:00
loathingKernel b9e9ed8088 EnvVars: Use monospace fonts for keys and values 2023-02-04 17:38:07 +02:00
loathingKernel 620e8f721c ImportGroup: Adjust for RareGame 2023-02-04 17:38:07 +02:00
loathingKernel 56876227dd GameInfo: Move uninstall_game from GameUtils to GameInfo
When `Uninstall` is used from the widgets, it will take the user to
the `GameInfo` page similar to how `Install` works.

`GameInfo` is not connected to the `RareGame` instance's `installed`
and `uninstalled` signals to refresh the contents of the page based
on the related functionality.
2023-02-04 17:38:07 +02:00
loathingKernel 6ccbeb12dc DownloadsTab: Use elided text from version numbers 2023-02-04 17:38:07 +02:00
loathingKernel 91ef4ca944 LaunchDialog: Do case-insensitive search for the games executable 2023-02-04 17:38:07 +02:00
loathingKernel 4063195b4d DownloadsTab: Refactor downloads tab
When updates are queued, they are removed from the update's list. An exceptions is made
when the queued item comes from repairing (without updating), in which case the update is
disabled for the runtime.

A queued item can be either removed (if it is an update it will be added back to the
updates groups) or forced to be updated now. If a queued item is forced, the currently
running item will be added to the front of the queue. Downloads will be queued if
there is no active download but there is a queue already.

The download thread is now responsible for emitting the progress to `RareGame`

InstallDialog: Pass `RareGame` and `InstallOptionsModel` only as arguments.
The `update`, `repair` and `silent` arguments are already part of `InstallOptionsModel`
`RareGame` is used to query information about the game.

InstallInfoWorker: Pass only `InstallOptionsModel` as argument
Emit `InstallQueueItemModel` as result, to re-use the worker when queuing stopped games

RareGame: Query and store metadata property about entitlement grant date
RareGame: Add `RareEosOverlay` class that imitates `RareGame` to handle the overlay

LibraryWidgetController: Remove dead signal routing code, these signals are handled by `RareGame`
Directly parent library widgets instead of reparenting them

GameWidgets: Remove unused signals

EOSGroup: Set install location based on preferences and use EOSOverlayApp from legendary

GamesTab: Connect the `progress` signals of dlcs to the base game's signals
GamesTab: Remove dead code

GlobalSignals: Remove `ProgresSignals`

RareCore: Mangle internal signleton's names

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel 8dd58dc5e9 EGLSync: Subclass EGLSyncListGroup and EGLSyncListItem
Subclass `EGLSyncListGroup` and `EGLSyncListItem` into import/export
specific classes. This way we don't have to specify the type of
operation at instatiation and improves code clarity and intention.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:07 +02:00
loathingKernel 0d4b75d399 GameProcess: Make it a persistent member of RareGame
The `GameProcess` class now acts as a persistent member of `RareGame`
that can be re-used for launching games. Its signals are handled and
repeated by `RareGame`.

Implements launching directly into `RareGame`

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 08c7ae89e9 Utils: Don't import singletons in rare.utils.misc to avoid uninitialized used and cyclical dependencies
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 599db2629f TrayIcon: Update the list of recent games after a game has exited
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 426be3e403 TrayIcon: Use RareCore to query last played games.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 79bae4374d GameInfo: Transition to RareGame
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel c9b8774422 GameInfoTabs: Disable metadata tabs when --debug is not defined
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel db0724fba0 GameInfo: Use RareGame to keep the VerifyWorker running on a game and connect progress to the widget.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 2923c09bad GamesTab: Also scroll to top when filter changes.
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel ab596139af RareCore: Add RareGames to a data structure in RareCore
This merges a few of the internal features of RareCore such us
RareGame filtering and thus game grouping based on attributes.

This is required to properly connect a single signal from RareCore to
the downloads tab for game installation. This also includes filtering
games based on updates and other attributes.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel b0c4fb4212 GameUtils: Adapt to use RareGame
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 5d209e1805 GameWidgets: Split status label to two
The original status_label is used to reflect the state of the game,
the tooltip_label is used to reflect the action of the current hovered
widget.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 4640f8af6f RareGame: Add metadata loading into RareGame itself and adapt tray icon to use the same file structure
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 9ca39d94ab GlobalSignals: Reorganize signals into groups
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 83df445de9 GlobalSignals: Fix signal names in EGLSyncGroup and ImportGroup
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 857b3a3cc0 WineResolver: Pass LegendaryCore at instantiation
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel b73fc328d2 GameInfo: Use ui member instead of double inheritance for the UI module
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 7b6a3e181a Shared: Move GameUtils and CloudSaveUtils into rare.shared
Removed `rare.utils.legendary_utils`, the `uninstall_game` function
was moved to `rare.shared.game_utils` for now

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 96b80bc423 Library: Introduce new tile design from refactor_backend
Currently broken but Rare starts

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel ab858b87d3 InstallDialog: Fix title capitalization
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 672a283472 GameInfoTabs: Emit back signal instead of accessing parent when Esc is pressed
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel e059db1984 LibraryWidget: Remove class variables
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 6eb4e19807 GameInfo: Adapt tab to handle uninstalled games too
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 4796fb5efa GameSettings: Check if Igame has save_path attribute before using it
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel d7a5404517 VerifyWorker: Move to rare/shared/workers
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel c5e2893f64 UninstalledInfoTabs: Remove
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel a58e385f8b GameInfo: Add all currently available tabs to GameInfo
Prepares for removal of dedicated UninstalledGameInfo tab

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 4239acea24 GameDlc: Replace double inheritance with UI member class
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
loathingKernel 652968b6bf RareGame: Introduce RareGame from refactor_backend branch
Shared: Move WineResolver to `rare/shared/workers`
PathSpec: Move to `rare/models`

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2023-02-04 17:38:06 +02:00
lanmaster53 db1691b694
Fixed a bug that caused a UI crash on Mac-based systems. (#267) 2023-02-04 15:23:07 +01:00
lennard e46ae0f91e
Fix "Offline" text in account widget 2023-01-08 20:41:02 +01:00
lennard a90d6ba7c8
Fix too high download speed 2022-12-01 00:12:12 +01:00
loathingKernel cb49e8b678 Integrations: EOS -> Epic Overlay 2022-11-04 02:44:45 +02:00
loathingKernel b84d8a5c67 ImportSync: Rename to Integrations due to expanding their use. 2022-11-03 22:50:21 +02:00
loathingKernel 61749f9acd EOSWidget/UbiActivationHelper: Move them from Settings to ImportSync 2022-11-03 22:34:50 +02:00
loathingKernel da79519e80 GameListHeadBar: Combine the "Import" and "EGL Sync" buttons into a menu
The "EOS and Ubisoft" tab is currently empy
2022-11-03 14:53:58 +02:00
loathingKernel 891804ae37 AccountWidget: Remove dead signals after the offline mode fix
Signals, if they carry the same datatype, can be chained simply
with `signal.connect(othersignal)` without the need to use a `lambda`
expression and `emit()`

TabWidget: Fix error because the `exit_app` signal was called directly
2022-10-31 17:00:01 +02:00
loathingKernel 435d560b5c InstallDialog: Update the collapsible widget to take a widget instead of a layout
This change makes it more inline with how QScrollArea operates on a central widget.
Other changes include using a QFrame instead of a QWidget as a base and
adding a QLabel for the title instead of the horizontal line.

The advanced options were split into their own separate widget. Right now
their class operates only as a container with the logic remaining in the
InstallDialog.
2022-10-31 16:59:55 +02:00
loathingKernel 5370355e5d Lgndr: Restructure module to follow legendary's file hierarchy
Move overloaded class files into the folders following
legendary's structure. Move Rare's integration classes into
their own subfolder.
2022-10-29 14:50:18 +03:00
loathingKernel e6ff2bb41e ImportGroup: Enable the button when "Import DLCs" changes 2022-10-29 14:50:18 +03:00
loathingKernel 9fcb924ae8 Widgets: Correct CollapsibleWidget name 2022-10-29 14:50:18 +03:00
loathingKernel 47b474a31a StyleSheets: Remove last use of custom noBorder property
Instead, use `QFrame.NoFrame` as `FrameShape` to set `0px` border width.
2022-10-29 14:50:18 +03:00
lennard ca45c62414
Fix offline mode 2022-10-29 12:23:50 +02:00
lennard 923aa1b90d
Migrate to legendary 0.20.30 2022-10-26 21:36:16 +02:00
lennard 97157646a1
Fix some translation strings 2022-10-23 22:52:49 +02:00
lennard 8e721cc324
Include Origin games in get_wine_prefixes() 2022-10-23 22:52:39 +02:00
loathingKernel 3291100709 InstallDialog: Set irrelevant widgets as disabled.
Do not hide irrelevant options, show them as disabled instea.
This like the install directory are still informational despite
not being editable.

Also homogenize variable and widget naming.
2022-10-23 21:36:44 +03:00
loathingKernel c1a008dce1 MainWindow: Don't connect to the global exit signal
Instead of connecting to the global `exit_app` signal, pass the signals
through their respective widgets. Because signals are queued by
default, this ensures that slots are executed in the order they are
connected. Makes it cleaner to do cleanup procedures where they should
make sense, unlike the global signal, where it has to be inferred by
the widget instantiating order.
2022-10-23 16:08:27 +03:00
loathingKernel 3c413c4e1f AccountWidget: Refuse to logout if there are active downloads
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-10-23 00:54:11 +03:00
loathingKernel 28b2b7ea9b MainWindow: Handle active downloads when exiting through WM's close button.
When the closed through the WM's close button, `closeEvent()` is
 used directly. In this case the dialog in the `on_exit_app`
slot was skipped.

There is a mishandled case. If coming from logout while there
is an active download (Yes to logout -> No to stop download)
we end up in a weird state which I haven't investigated yet.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-10-23 00:01:30 +03:00
loathingKernel ef65e8ce09 DownloadsTab: Show the update version of InstallDialog if it is an update
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-10-22 15:44:22 +03:00
loathingKernel e9fab53aff UninstallDialog: If the game has selectable downloads, default to keeping configuration
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-10-22 15:41:49 +03:00
Stelios Tsampas 53cab3ecb9 GameInfo: Add missing space 2022-10-19 17:53:37 +03:00
lennard 68868c6259
Set game to not running, if an error occurred 2022-10-18 21:26:48 +02:00
lennard 378d876c3b
Add Ukrainian language 2022-10-17 20:00:46 +02:00
lennard ebd567e665
Disable pypresence settings if not installed 2022-09-27 21:55:57 +02:00
lennard fbd16b99ae
Update translations 2022-09-27 21:48:44 +02:00
lennard 24774b07c0
Fix move game on Windows 2022-09-27 21:09:41 +02:00
Dummerle 5d24c672b2 Catch Permission errors, when disabling and enabling EOS overlay 2022-09-19 01:00:17 +02:00
loathingKernel 83551f9b9e DownloadThread: Don't mark prerequisites as installed if the user selected not to install them
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-09-18 20:52:59 +03:00
Stelios Tsampas 0960cbbdd3 DownloadThread: args is a string! 2022-09-18 15:07:42 +03:00
Stelios Tsampas 14eda1c246 DownloadThread: Weirdly setNativeArguments doesn't exist despite the docs saying that is should be available on Windows 2022-09-18 12:52:15 +03:00
loathingKernel e621955a22 RareSettings: Handle permission error when deleting logs 2022-09-13 12:38:43 +03:00
loathingKernel f7e9375964 LaunchDialog: Make the split 75/25 2022-09-11 19:45:17 +03:00
loathingKernel cf5fd415e5 LaunchDialog: Add a middle-ground solution for concurrent image downloads 2022-09-11 14:51:37 +03:00
loathingKernel 52108688d3 LaunchDialog: Use ElideLabel for progress information 2022-09-10 22:42:47 +03:00
Stelios Tsampas 7a1935335e GameInfo: Work-around slowdown on widget update_game() request 2022-09-10 19:04:40 +03:00
Stelios Tsampas 21ea2af8e1 App: Move timer initialization after LaunchDialog has finished 2022-09-10 18:07:32 +03:00
Stelios Tsampas 74a3d9458d LaunchDialog: Show validation progress separately from download progress. 2022-09-10 17:27:37 +03:00
Stelios Tsampas cc74767f0a App: Move verification requirement check into launch dialog 2022-09-10 15:33:48 +03:00
Stelios Tsampas afcb3f7e7a GameLaunchHelper: Allow closing the window only if the application has exited or crashed 2022-09-08 16:02:17 +03:00
Stelios Tsampas d5d795ce79 Paths: Query paths after the OrganizationName and ApplicationName have been set
At the point they were evaluated, `OrganizationName` and `ApplicationName` are unset
resulting in wrong paths. As a quick fix, explicitly set them to their later values
Per OS examples:
Windows:
	before:
		data: C:\Users\<user>\AppData\Local
		cache: C:\Users\<user>\AppData\Local\cache
	after:
		data: C:\Users\<user>\AppData\Local\Rare\Rare
		cache: C:\Users\<user>\AppData\Local\Rare\Rare\cache
2022-09-08 01:27:37 +03:00
loathingKernel 5029921b09 Move a bunch of class attributes to instance attributes 2022-09-07 18:21:50 +03:00
Dummerle 4f91c6b422
Move widgets and uninstalled_games attributes to __init__() 2022-09-05 22:46:44 +02:00
Dummerle 333bb40ad7
Fix wrong origin classification for ue plugins without assets 2022-09-05 20:50:10 +02:00
loathingKernel 1ebd0b18d8 Introduce a very basic RareCore to handle signletons and their cleanup. 2022-09-04 20:39:03 +03:00
loathingKernel 7020141148 LaunchDialog: Move update check before login() 2022-09-04 19:51:23 +03:00
loathingKernel afcdc1dea1 App: Move legendary initialization to the singleton
App: Move tray to MainWindow
Shared: Add destructor for singleton instances
2022-09-04 01:14:43 +03:00
loathingKernel 0a89f0e0b8 Make launch and alias for start 2022-09-02 13:17:05 +03:00
loathingKernel 48867a8656 DebugSettings: Add restart button, thanks Dummerle! 2022-09-02 00:31:10 +03:00
loathingKernel 3c5575fda9 LaunchDialog: Don't explicitly delete LoginDialog 2022-09-02 00:04:39 +03:00
loathingKernel 345ee443ed ImportLogin: Only add the first part of the split 2022-09-02 00:02:20 +03:00
loathingKernel b3348a1eca ImportLogin: Check if programdata is set 2022-09-01 23:48:30 +03:00
loathingKernel 0388d4bf9d ImportLogin: Fix failure to login using EGL data 2022-09-01 22:49:09 +03:00
loathingKernel fb708ce5fd LoginDialog: Update to legendary 0.20.28 2022-09-01 18:53:16 +03:00
loathingKernel 2c36ffcd51 Lgndr: Adjust for d8af06c936 2022-09-01 11:49:42 +03:00
loathingKernel 6941556265 InstallDialog: setup UI class as member instead of double inheritance 2022-08-31 17:42:40 +03:00
loathingKernel b1c713be12 InstallDialog: Show silent dialog in case of error
InstallDialog: Default shortcut creation to Unchecked in the UI file
InstallDialog: Save and reuse last shortcut creation value
2022-08-31 17:41:12 +03:00
Dummerle 4e325eb3d8
Ignore some pylint errors 2022-08-30 01:33:08 +02:00
loathingKernel a6d1cae8a8 Lgndr: Temporary fix for DLManager monkeypatching in Windows 2022-08-30 01:22:08 +02:00
loathingKernel 2f983d9b52 InstallDialog: Adjust collapsible widget 2022-08-28 22:07:26 +02:00
Dummerle cb3f316bf0
Fix proton visibility on Windows 2022-08-27 12:47:17 +02:00
Dummerle 70a51902d2
Move move game stuff to external file
I know it's weird
2022-08-27 12:32:20 +02:00
Dummerle 3469946ee9
Install prereqs by default on windows 2022-08-27 12:32:20 +02:00
Dummerle 2797485e69
Fix reason for cloud save edit, if nothing wrong 2022-08-27 12:32:20 +02:00
Dummerle da07d6b791
Move some options in install dialog to advanced options 2022-08-27 12:32:17 +02:00
loathingKernel 2b141c276f InstallDialog: Fix dlm keyword argument 2022-08-26 11:38:13 +03:00
loathingKernel 50a37be433 DownloadsTab: Remove dead code 2022-08-17 23:46:10 +03:00
loathingKernel c40fef0595 Lgndr: Transfer what DownloadThread does to install_game_real (not used yet)
DownloadThread: Refactor names to match Lgndr
2022-08-12 13:17:53 +03:00
loathingKernel 5e022e6d28 Lgndr: Rename a few fields to reflect legendary's names 2022-08-08 21:06:58 +03:00
loathingKernel e97e9fe841 Downloads: Add skip_dlcs and with_dlcs arguments. 2022-08-08 17:26:38 +03:00
loathingKernel 3ee789a695 Update DownloadThread 2022-08-03 02:33:50 +03:00
loathingKernel 38dfdc8bc2 Lgndr: Remove LegendaryCLISingleton
Since `LegendaryCLI` isn't stateful, we can instantiate
it when needed
2022-08-02 10:42:38 +03:00
loathingKernel 5ac71e99f0 DownloadThread: Use clean_post_install instead of local copy
InstallDialog: Handly empty `config_tags`
Lgndr: Cleanup
2022-08-02 10:42:38 +03:00
loathingKernel e5c7b029ff GameInfo: Offer to also update the game after a verification if there is one 2022-08-02 10:42:38 +03:00
loathingKernel 785aaf648e GameInfo: Detect repair_and_update requirement
If a game was partially installed and it was imported
through the import functionality, if `repair_and_update`
is specified it will report `0` download size if there
is no real update to be done. Fix it by detecting the
need for an update explicitly.

This will also force games that have failed verification
to also update while repairing them, fixing the
long-standing issue of repairing an older version of a
game and then doing the update in a separate step.
2022-08-02 10:42:38 +03:00
loathingKernel 3501741c03 DownloadsTab: invalidate and recreate update widgets on import
Previously on game import, multiple update widgets for the same game
were created in the downloads tab. Instead of checking if a widget
already exists, invalidate the delete the existing and add a new one
with the current information about the installed game.
2022-08-02 10:42:38 +03:00
loathingKernel f375357a2c Utils: fix unresolved references 2022-08-02 10:42:38 +03:00
loathingKernel 7408116deb Lgndr: Don' use lambda with default argument 2022-08-02 10:42:38 +03:00
loathingKernel 3ecbae0564 Utils: Rename utils.py to misc.py to not confuse PyCharm checker 2022-08-02 10:42:38 +03:00
loathingKernel f51563ea93 Models: Move installation related models into their own file 2022-08-02 10:42:38 +03:00
loathingKernel 7fba2259ed LoginDialog: Fix crash due to messagebox parent 2022-08-02 10:42:38 +03:00
loathingKernel ee5adce18b Implement LgndrIndirectLogger to return the last logged message from LegendaryAPI
The indirect return is stored in a `LgndrIndirectStatus` object that provides checking and unpacking features

Lgndr: `LgndrInstallGameArgs.install_tag` default to None
Lgndr: add default `move` method.
Lgndr: monkeypatch `dlm.status_queue` after preparing a download to reduce `InstallQueueItemModel`
InstallOptionsModel: implement `as_install_kwargs` to pass only relevant arguments to `LgndrInstallGameArgs` in InstallDialog
InstallOptionsModel: rename `sdl_list` to `install_tag` as they were the same thing
LegendaryUtils: Update to use `LgndrIndirectStatus`
UninstallDialog: Add option to keep configuration decoupled from keeping game data
GameUtils: Add messagebox to show error messages from legendary after uninstalling a game
InstallDialog: Update to use `LgndrIndirectStatus`
InstallDialog: Update selectable download handling to match legendary's
DownloadThread: Remove multiple instance variables, instead reference them directly from `InstallQueueItemModel` instance
ImportGroup: Replace `info_label` with an `ElideLabel` for displaying long messages
ImportGroup: Don't translate message strings in the `ImportWorker`
GameInfo: Call `repair()` if needed after verification instead of handling it locally
GamesTab: Fix string matching for capitalized strings and scroll to top on when searching
2022-08-02 10:42:38 +03:00
loathingKernel 28531eec38 Lgndr: Add logger monkey class
The class acts as an intermediate between the logger and the function call
It keeps the last message that was sent to the logger. The instance of the
class can be returned as a return value from the LegendaryCLI methods to
provide return status and the message related to it.

The level at which it considers the logged message as an error is configurable.
By default it considers logging.ERROR and above as faulty return values
2022-08-02 10:42:38 +03:00
loathingKernel bbaff5f42c Lgndr: Add re-implemented uinstall_game
Lgndr: Change the exception level to CRITICAL for core
LegendaryUtils: Use uninstall_game from our Lgndr
UninstallDialog: Update to return a tuple of values
App: Keep files if the install directory was lost
App: Run legendary's exit procedures on exit
2022-08-02 10:42:38 +03:00
loathingKernel 5c1ff81370 LegendarySettings: clean_manifests expects more values 2022-08-02 10:42:38 +03:00
loathingKernel 2bf41f20d1 Lgndr: Match the arguments of legendary's get_boolean_choice 2022-08-02 10:42:38 +03:00
loathingKernel d05f74b286 ImportGroup: Add option to import DLCs 2022-08-02 10:42:38 +03:00
loathingKernel 14087a3c6c Lgndr: Add default implementation for get_boolean_choice that returns False 2022-08-02 10:42:38 +03:00
loathingKernel b4a1efa357 Lgndr: Add 'repair_and_update' argument in InstallOptionsModel 2022-08-02 10:42:38 +03:00
loathingKernel aeb149a3e9 Lgndr: Use custom wrapped decorator to wrap LegendaryCLI functions
Lgndr: Add `get_boolean_choice` to relevant args dataclasses
Lgndr: Move mock functions to `api_monkeys`

InstallDialog: Add status queue to prepare_overlay_install arguments, fixes missing download stats
2022-08-02 10:42:38 +03:00
loathingKernel 545d77ef07 Lgndr: Expose 'resolve_aliases' for outside usage 2022-08-02 10:42:38 +03:00
loathingKernel 3aae3887f6 Lgndr: Create argument models for consistent function arguments and cleaner implementation.
Lgndr: Prefix files that aren't part of legendary with 'api_'
Lgndr: Return statistics from 'verify_game' instead of parsing the exception
VerifyWorker: Add 'error' signal for exceptions.
2022-08-02 10:42:38 +03:00
loathingKernel 197f915fb3 InstallOptionsModel: Rename fields to use the same names as Legendary's arguments 2022-08-02 10:42:38 +03:00
loathingKernel 883bd268ff Mirror Legendary classes structure in the shim.
Lgndr: Move code segments copied from `prepare_download` back to their original location in `install_game`
Lgndr: Add the LgndrLogHandler at initialization instead of every function.
Lgndr: Move `verify_game` to its original place in `LegendaryCLI`
Lgndr: Change the way DLManager is patched into LegendaryCore proper
Shared: Add singleton for LegendaryCLI, LegendaryCoreSignleton returns core from LegendaryCLI
VerifyWorker: Update to use `verify_game` from `LegendaryCLI` directly
PreLaunchThread: Initialize LegendaryCLI to get LegendaryCore from it
InstallDialog: Update `prepare_install` argument names
2022-08-02 10:42:38 +03:00
loathingKernel 3892f4a594 ImportGroup: Update the shim stuff for the import worker 2022-08-02 10:42:38 +03:00
loathingKernel 51c45015a4 InstallDialog: Remove unused arguments 2022-08-02 10:42:38 +03:00
loathingKernel 2c2f44c97c Use a loggin handler in stead of monkeypatching for raising LgndrException 2022-08-02 10:42:38 +03:00
loathingKernel 99ab488820 Pass the correct status queue and monkeypatch run_real in prepare_download 2022-08-02 10:42:38 +03:00
loathingKernel ad81546b35 Adjust EGLSyncGroup to use LgndrException 2022-08-02 10:42:38 +03:00
loathingKernel c302775acd Remove dead code from EGLSyncGroup 2022-08-02 10:42:38 +03:00
Stelios Tsampas 04a76ed2ff Include PoC implementation of LegendaryCLI for the import_game method 2022-08-02 10:42:38 +03:00
Stelios Tsampas e58d33ee5d Create shim legendary classes for overloaded functions 2022-08-02 10:42:37 +03:00
Dummerle e6fc2323f1
Do not exit console, when game exited 2022-08-01 01:22:37 +02:00
loathingKernel e005423d0a GameUtils: Remove functions moved to LaunchHelper 2022-07-11 23:07:00 +03:00
loathingKernel 43c8cf8b52 LaunchHelper: Move console into the game_launch_helper folder
LaunchHelper: Log stderr to the console
2022-07-11 22:18:26 +03:00
loathingKernel 406cfc136f ImportGroup: Close file after reading app_name 2022-07-11 22:18:26 +03:00
Dummerle 165b289c4f
Remove extra information for eos overlay 2022-07-10 22:00:35 +02:00
Dummerle 87ea29d005
Fix appname error in game_info.py and error in postinstall 2022-07-10 01:18:19 +02:00
loathingKernel 0d6c9a8505 ImportGroup: Show messagebox when importing multiple games (scanning install folder)
I moved around a few things because the separate lists felt like they
would make the handling a bit complicated.
2022-07-02 22:19:40 +03:00
loathingKernel 76cd33054a EGLSyncListGroup: Move message box outside of thread to prevent "parent in other thread" crash 2022-07-02 11:48:33 +03:00
Dummerle 667ca0ecb6
Move import games to separate thread 2022-07-01 17:43:25 +02:00
Dummerle 93c732401c
Fix error after uninstalling, if action in tray icon does not exist 2022-07-01 17:03:18 +02:00
Dummerle 35f4807a26
Fix Attribute error on too old Qt version 2022-06-29 21:45:15 +02:00
loathingKernel 1ad5413e02 LibraryWidget: Always update the progress label to work-around layout issue 2022-06-26 14:31:12 +03:00
loathingKernel b8668854db Move the installed and available games count to the head bar.
Moving them to the head bar makes the library containers
simpler structurally as there the library's frame can be removed.

Remove games_tab UI files as they were getting very thin,
what they contained is being setup manually instead

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-25 19:21:24 +03:00
Stelios Tsampas 61a2a6781d Add window hint to keep minimize button while still disabling close button
Disable reject method for launch dialog
Don.t update the assets again for the 32bit and mac games by waiting for ImageWorker to finish
2022-06-24 11:29:41 +03:00
Dummerle 7cba799d21
Merge pull request #220 from loathingKernel/fixups
Bug fixes for merged features
2022-06-23 22:13:57 +02:00
Dummerle 583f75d235
Fix some errors 2022-06-23 22:01:14 +02:00
Dummerle 43369ae143
Revert "Add a restart function in debug settings to easier test game helper"
This reverts commit cbf51b6bb7.
2022-06-23 20:11:09 +02:00
loathingKernel 367f6cf0eb Add window buttons to Launch and Login Dialogs 2022-06-23 20:39:43 +03:00
loathingKernel 7dbe414b87 Pass edited files through black 2022-06-23 18:05:04 +03:00
loathingKernel 145bc5f540 Use SlidingStackedWidget for the login dialog.
Also fixes the login window missing dialog type hints for the window manager.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-23 17:57:29 +03:00
loathingKernel fe40dac368 Don't show the installing widget for Epic Overlay and DLCs
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-23 17:54:26 +03:00
Dummerle d8a766e756
Fix missing icon font prefix for LTS distros 2022-06-22 20:06:38 +02:00
loathingKernel 9e394f9981 GamesTab: Create methods for repeated widget removal and deletion code segments
HeadBar: Compact the headbar, re-use ButtonLineEdit from shop for the search function
SelectViewWidget: Remove content margins and make widget naming consistent

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-22 20:00:00 +03:00
loathingKernel 5eb3ae7f80 Add SlidingStackedWidget from #196 2022-06-22 16:53:26 +03:00
Dummerle b3843b095f
Merge pull request #215 from aznd/enhancements_moving_game
Small enhancements in moving game
2022-06-20 22:32:46 +02:00
loathingKernel 08ab130c5c LibraryLayout from #196
Introduces the LibraryLayout from #196.
This layout distributes the available space in either horizontal side and in-between the widgets.

Known issues: When searching for a game, it will re-align visible widgets, effectively centering the results.
This is because the search and grouping functions are interleaved. #196 handles it differently by adjusting
the opacity and re-ordering of the irrelevant widgets.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-20 19:04:46 +03:00
aznd 9535885318 Change "Available space" text in pop up for uniformity 2022-06-20 16:13:34 +02:00
aznd d51bba60db Use shutil.disk_usage because statvfs not available outside of UNIX 2022-06-20 16:11:58 +02:00
Dummerle d772c4000e
Merge pull request #213 from loathingKernel/image_widget
Add ImageWidget and LibraryWidget from #196
2022-06-19 22:53:11 +02:00
Dummerle cbf51b6bb7
Add a restart function in debug settings to easier test game helper 2022-06-19 22:50:13 +02:00
Dummerle 87a110b62b
Fix missing game environment and add last played to game meta 2022-06-19 22:07:21 +02:00
loathingKernel 6335293eef Add ImageWidget and LibraryWidget from #196
Add the Image and Library widgets from #196. In this iteration they replace the image `QLabel` in the existing widgets.

The `PaintWidget` in the `InstallingWidget` has been replaced by the future `LibraryWidget` that has progress indication.

The `ImageWidget` was also used to replace the image `QLabel` in `GameInfo` and `GameDlc` widgets.

Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-19 20:42:49 +03:00
loathingKernel 3a28f2f0a2 Implement image manager
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-19 17:12:59 +03:00
Dummerle 37ae6e2b6e
Fix most errors 2022-06-18 13:25:39 +02:00
Dummerle 8a9ef67d2f
Check for running games at startup 2022-06-13 22:59:35 +02:00
Dummerle 0bb1d0ef7e
Add communication system for game helper 2022-06-13 22:59:35 +02:00
Dummerle c4617de206
Add offline and some other options and cleanup code 2022-06-13 22:59:34 +02:00