1
0
Fork 0
mirror of synced 2024-07-01 04:30:20 +12:00
Commit graph

650 commits

Author SHA1 Message Date
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 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 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 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 922b1472dd IconWidget: Fix typo in install_btn css selector 2023-02-17 10:49:34 +02:00
loathingKernel d8c31a05c2 GamesTab: Remove timing debug message 2023-02-16 16:22:31 +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 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 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 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 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 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 c0b98978f1 QueueGroup: Also update movement arrows when a widget is deleted 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 28e68cad97 MoveWorker: Move worker into rare/shared/workers 2023-02-04 17:38:07 +02:00
loathingKernel f0b81c7038 RareGame: Add state property and emit the widget.update signal on change 2023-02-04 17:38:07 +02:00
loathingKernel 683b33da10 DownloadsTab: Refuse to start download if the game's state is not idle 2023-02-04 17:38:07 +02:00
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