Commit graph

8013 commits

Author SHA1 Message Date
Daniel Johnson d5bd4b3504 Ack, I botched the border_width!
How'd that happen?

Remove the botch, now it looks a bit less dumb.
2022-10-08 09:55:11 -04:00
Daniel Johnson 1e53b52805 Correct runner_executable in basiliskii.json
It needs to refer to the post-extraction executable. So now it can install!

Resolves #4445
2022-10-08 09:53:35 -04:00
Daniel Johnson e78cea0d3a Correct melonds.json
The direcotry name is 'melonds', lowercase.
2022-10-08 09:46:33 -04:00
Daniel Johnson 9b8622c32f Provide a directory property on the runner
Many places can use this to be more readable, and I've updated some.

Many subclasses of Runner might still benefit.

But the real win is fs-uae. This still installs in 'fs-uae' not the
expected 'fsuae'; overriding directory lets us work around this.

So, now you can uninstall fs-uae.
2022-10-08 09:43:12 -04:00
Daniel Johnson bcc3ea86d0 Update the DownloadDialog to the ModalDialog base class
This actually does no good yet because there's no way to get a parent in there.
2022-10-08 08:53:05 -04:00
Daniel Johnson cbd0e41127 Change base class of MoveDialog
What this does is let us center the MoverDialog over its parent, while remaining modeless.
2022-10-08 08:43:27 -04:00
Daniel Johnson c013372248 Oops; shouldn't have committed this change, it was for testing. 2022-10-08 08:33:42 -04:00
Daniel Johnson 8e50c515f3 Corrections to the DontShowAgainDialog
This should not have a border-width; it looks really goofy.

Also, set the default response so 'Enter' can close this dialog.
2022-10-08 08:32:35 -04:00
Daniel Johnson 520b3e29bd Update the buttons in the InstallerSourceDialog
It's a modeless dialog, but enter-to-close is still convenient to have.
2022-10-08 08:28:20 -04:00
Daniel Johnson 7ab205e267 Update the buttons in the LauchConfigSelectDialog
But it's not properly modal yet; no way to get a toplevel in the Game class, That's too big to fix now; I'll PR somethi8ng later.
2022-10-08 08:17:28 -04:00
Daniel Johnson 1c07f4e7c8 Whoops; action == None is also used for plain GUI startup. I need a real 'cancel' actrion! 2022-10-08 08:11:51 -04:00
Daniel Johnson 686b471e89 Colorize the install-or-play dialog
This is summoned from the command line. So, if the user cancels the
dialog, exit Lutris.
2022-10-08 08:07:55 -04:00
Daniel Johnson de4a77dcb3 Make the WebConnect dialogs properly modal
They have set_modal(True) on them so I think they were intended to be modal.
2022-10-08 07:56:21 -04:00
Daniel Johnson 738329d737 And lets turn the 'Uninstall' buttons in the WINE versions red too!
Yes, I'm painting the app red. What of it?
2022-10-08 07:17:39 -04:00
Daniel Johnson 3d8ba33f1a Restyle the Uninstall and Remove dialogs with 'destructive-action'
This turns the "Uninstall" and "Remove" buttons here red.
2022-10-08 07:14:54 -04:00
Daniel Johnson 5cab2a8335 Use fancier buttons for the WINE versions dialogs. 2022-10-08 07:09:10 -04:00
Daniel Johnson 8348d22757 Improved support for css_classes in buttons; explicit ModalDialog base class 2022-10-08 07:08:34 -04:00
Daniel Johnson 32a6e8accf Further fixes for the CacheConfigurationDialog
This dialog wasn't quite all there.

I've put in Cancel and OK buttons, with proper keyboard shortcuts and
styling.

Also, the file chooser did not work properly here, probably because it
needs to be modal.

So, use run() instead of show(), and no 'response' signal stuff.
2022-10-07 20:33:14 -04:00
Daniel Johnson e09d5d58be Revert "A further attempt to pipe configs into runners wherever possible, and to also get the 'exe' and 'prefix' in there."
This reverts commit 49d093a6b2.
2022-10-05 17:53:44 -04:00
Daniel Johnson 0464e1691d Revert "Also the working dir, just in case."
This reverts commit 5cfbc12696.
2022-10-05 17:53:22 -04:00
Daniel Johnson 5cfbc12696 Also the working dir, just in case. 2022-10-05 17:46:38 -04:00
Daniel Johnson 49d093a6b2 A further attempt to pipe configs into runners wherever possible, and to also get the 'exe' and 'prefix' in there. 2022-10-05 17:38:50 -04:00
Daniel Johnson aa04aa58e6 Fix missing game dependency code
It needs to fetch the *dependencies* installer, not just try to use
the current installer list.

Also, we do support multiple InstallerWindows; no need to close the
original. We'll want it once the dependency is in!

Resolves #4539
2022-10-03 19:12:20 -04:00
Daniel Johnson bc171689e7 Use new UnavailableRunnerError more 2022-10-02 18:53:50 -04:00
Daniel Johnson f8374dbc91 Fix warnings and tests.
The has_explicit_config flag is needed in libretro, it turns out.
2022-10-02 15:45:27 -04:00
Daniel Johnson cc509641f0 Generalize the fix to all runners
Unstab the stab in the dark. It worked, but the wineexec hack is a hack.

Instead, runners 'always' have a self.config, and
lazy allocate a LutrisConfig on demand if need be.

This won't have game configuration, so a separate flag drags if we were given an
explicit game config so we can preserve the warning about that.
2022-10-02 15:26:08 -04:00
Daniel Johnson 8321bfe607 Try to get a reasonable config in there for wineexec. 2022-10-02 14:43:07 -04:00
Daniel Johnson 526485fd38 Report errors in InstallerDialog from some awkward cases
Specifically, the click handlers for CD-ROM insertion
and the 'launch_install' method need special case handling.
2022-10-02 10:08:01 -04:00
Daniel Johnson 1131b3f237 Correct behavior for the 'create shortcut' checkboxes
They should support being unchecked, not just checked.

It is very import to support indecisiveness. Or maybe not.
2022-10-02 09:51:19 -04:00
Daniel Johnson 005d31d480 More comprehensive error reporting for InstallerWindow
InstallerWindow has been a real sore point for good error reporting;
lets try to fix it.

This commit uses @watch_errors() to provide error handling on all the
signal handlers in InstallerWindow,

Some of the methods named 'on_xxx' were not signal handlers.
I have renamed these.

Some were signal handlers, but were also directly called too.
I've split these into an on_xxx method with @watch_errors and
another method without.

The idea is that errors should be reported before GTK sees them,
but otherwise should propagate through the code as before.
2022-10-02 09:43:49 -04:00
Daniel Johnson 43105dca99 Rename exception classes to end with 'Error'
Most of them do already, so let's be consistent.
2022-10-02 09:17:04 -04:00
Daniel Johnson 9db9c3a318 Mark many error messages as localizable
Just adding _() to message that seem to me intended for end users.
2022-10-01 15:44:12 -04:00
Daniel Johnson c6e4c3f6c7 Provide for a return of 'True' for some signal handlers
I do not see why this is actually needed, but I presume it is.
2022-10-01 09:22:23 -04:00
Daniel Johnson ef0d02afdb Extend error handling LutrisWindow
Just to the view activation handler. But I think we'll want to extend
this, so I used @watch_errors here also.
2022-10-01 08:19:11 -04:00
Daniel Johnson 9fe60c814c Error handling for game events on Application
This is done with a decorator like @watch_lutris_errors, but it is
a more simpler, more general design that calls back into 'self'.

I've also renamed watch_lutris_errors to watch_game_errors;
I think that's a clearer name.

Resolves #4489
2022-10-01 08:05:00 -04:00
Daniel Johnson a656bc6c77 Report any exception from the ScriptInterpreter initialization.
Also, allow another installer to be selected after this.
2022-10-01 07:39:59 -04:00
Daniel Johnson 3032a45103 When the WINE exe is missing, we raise an exception that is not being handled or reporting.
So, replace it with a specific exception and catch it so lutris can start and the replacements dict can be generated (with None for WINEBIN).

Resolves #4533
2022-10-01 07:30:22 -04:00
Daniel Johnson 1eb192b3c4 Disable pylint no-member warning for extract_icon
This class is uses dynamically generated 'structures' and pylint can't
figure that out, so just silence it.
2022-09-29 04:29:47 -04:00
Daniel Johnson 369c1c416f Add exception handling to icon extraction
We wouldn't want the save to fail just because we can't get an icon, and
rooting around in an EXE for an icon has got to be fraught with failure.

This will now log the error and continue with the save.
2022-09-28 04:36:32 -04:00
Daniel Johnson 0f2bb0ebae Update icon extraction to use new custom_images set
It was written before this set went in, and not updated when it was
merged.
2022-09-28 04:22:24 -04:00
Daniel Johnson dbe68f4453 Fix pylint warnings
These were not detected when extract_icon was in the wrong directory.
2022-09-28 04:19:08 -04:00
Daniel Johnson 77d00fefdc Move extract_icon to a more appropriate directory
./utils contains stand alone utility scripts; utility routines used
by wine seem to be in lutris/util/wine, so lets move this there.

I am hoping this will address issue #4529
2022-09-28 03:55:15 -04:00
Daniel Johnson 93bb0cbddd Insert some missing error handling
Specifically, provide callbacks for AsyncCall() that will report errors
when there's no callback or it ignores errors.
2022-09-27 18:46:03 -04:00
Wolfgang Scherer c0c4122252 Avoid excessive LutrisWindow updates when deduplicating Steam games 2022-09-27 05:56:05 +02:00
Daniel Johnson 67b3c0cc44 Replace the last ErrorDialog in game
But this time with a NoticeDialog. This is done with a new signal,
game-notice, just for this.

LutrisWindow handles it rather like game-error.
2022-09-26 20:28:16 -07:00
Daniel Johnson 3f6facbe77 Emit game-error directly if the death watch fails
This removes one more ErrorDialog, from the game class.
2022-09-26 20:28:16 -07:00
Mathieu Comandon 5ee931679e Handle pefile not being installed 2022-09-26 20:26:56 -07:00
Fedi Takeli f69a04b043 formatting 2022-09-26 20:16:42 -07:00
Fedi Takeli 555178c87e add 2022-09-26 20:16:42 -07:00
Fedi Takeli df341efd3a extract icon call in on_save 2022-09-26 20:16:42 -07:00