1
0
Fork 0
mirror of synced 2024-07-02 21:20:54 +12:00
Commit graph

100 commits

Author SHA1 Message Date
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 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 a5c8d92e24 Application: set HiDPi scaling attribute 2022-10-29 14:50:18 +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 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 f7e9375964 LaunchDialog: Make the split 75/25 2022-09-11 19:45:17 +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 8d9f02eab5 Initialize logging in RareApp and log both Rare and GameLaunchHelper 2022-09-08 15:33:36 +03:00
Stelios Tsampas c6b9f5c64f Fix shortcut creation on windows 2022-09-08 13:16:15 +03:00
Stelios Tsampas 7ebeee0d1e App: Log both to file and to stderr 2022-09-08 02:13:10 +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
loathingKernel 1ebd0b18d8 Introduce a very basic RareCore to handle signletons and their cleanup. 2022-09-04 20:39:03 +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 dfb388a9ba App: Do a bit more cleanup to avoid crashes 2022-09-02 00:20:04 +03:00
loathingKernel fb708ce5fd LoginDialog: Update to legendary 0.20.28 2022-09-01 18:53:16 +03:00
loathingKernel 50a37be433 DownloadsTab: Remove dead code 2022-08-17 23:46:10 +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 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 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
Dummerle 35f4807a26
Fix Attribute error on too old Qt version 2022-06-29 21:45:15 +02:00
Dummerle dace98b567
Add debug console for games and use same QApplication base for Rare and helper 2022-06-23 21:26:08 +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
Dummerle cbf51b6bb7
Add a restart function in debug settings to easier test game helper 2022-06-19 22:50:13 +02:00
loathingKernel 3a28f2f0a2 Implement image manager
Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com>
2022-06-19 17:12:59 +03:00
Stelios Tsampas 1c296474c5 Add a bunch of accumulated fixes.
Shared: Require an argument to initialize the each singleton, if it is called uninitialized, raise a RuntimeError
InstallDialog: Use QCheckBox label for the information text and remove the layout
LaunchDialog: Minor code clarity improvements
Console: add a Dialog with the process's environment variables
GameUtils: Inherit the system's environment and not a clean one
ImportGroup: Add the ability to automatically import all games in a folder
RareStyle: Use rgb values, remove hex codes and rgba values
IndicatorLineEdit/PathEdit: Infer object names from class name, don't override layout method
Models: Type fields as Optional (`Union[<something>, None]`)
Paths: Use pathlib for everything

Signed-off-by: Stelios Tsampas <loathingkernel@gmail.com>
2022-05-05 13:27:39 +03:00
Dummerle bea6311df5
Catch error, if re-login fails 2022-04-13 01:08:28 +02:00
Dummerle 613de928a6
Add a log to non debug mode, to get python version and os 2022-04-13 01:08:28 +02:00
Dummerle 8ac9a1c41f
Rewrite game launch code; Fix override_exe; auto renew session 2022-03-27 21:52:32 +02:00
Stelios Tsampas 6b2e8eef98
Rare: Add attribute for HiDPI 2022-02-25 20:22:51 +02:00
Stelios Tsampas d6ef44b2f9
Rare: Implement global objects as functions that return a single instance 2022-02-25 20:22:45 +02:00
Dummerle 2e6890bfd9
Move appdata paths to utils/paths.py to avoid crashes, if PyQt5 does not exist (deb workflow) 2022-02-17 00:04:53 +01:00
Dummerle baa5df380b
Images from store are saved for runtime 2022-02-05 16:03:21 +01:00
Dummerle e916301999
Add config_helper.py to automatically check sections and options 2022-02-05 14:48:50 +01:00
Dummerle 9d4abedd1d
Fix startup check for game executable 2022-02-05 13:56:28 +01:00
aznd 9b59707a10
Unify strings formatting (#158)
* Part 1: Unifying strings

* Part 2: Unifying strings

* Part 3: Unifying strings

* Fix missing close bracket

* Remove unneeded str()
2022-02-01 22:29:34 +01:00
Dummerle 45163eafb5
Fix startup_check and verification 2022-01-24 16:56:14 +01:00
Dummerle 761204aa80
Add check at startup, if game executable exists 2022-01-24 16:56:14 +01:00
Dummerle 78c0a74692
Fix some small issues
- shop: fix overlaying widgets
- launch_dialog.py dlg: error when catching exception
- fix exit in offline mode
2021-12-31 01:03:37 +01:00
Stelios Tsampas 8f89eb6e88
Rare: pass through Black formatter 2021-12-27 00:37:13 +01:00
Dummerle 5cd942b9e8
Fix silent mode + refactoring: move window to center, when showing window 2021-12-22 21:21:49 +01:00
Dummerle c5aeded9ad
Add some sys infos to debug option and print code name with --version 2021-12-11 23:41:55 +01:00
Dummerle d93294536a
Add --test-start to use in appimage-builder 2021-12-11 00:18:57 +01:00
Dummerle bab0659e12
Remove languages from qresources 2021-12-10 20:05:51 +01:00
Dummerle c425775f28
Update to new QResource system 2021-12-09 21:59:07 +01:00
Dummerle e370841532
Fix many bugs:
- launch command
- offline mode
- shop search results shows more than 1 game
2021-12-09 20:03:34 +01:00