Repository: lutris/lutris

Issue:
Runners can be configured when not yet installed, but not after removal
### Bug description

When you go into the Preferences dialog, Runners section, all the runners may be configured even if not installed. But  if you remove one, it's configure button disappears.

### How to Reproduce

Go into Preferences, select "Runners". Now, pick a runner and remove it. The configure button for that runner will disappear.

I think that is correct- but notice that all the other uninstalled runners have configure buttons. See the media attached. That can't be right.

### Expected behavior

I expect that the configure button will appear only for installed runners in the first place.

### Log output

```shell
INFO     2021-12-24 07:12:16,550 [startup.check_driver:53]:Using NVIDIA drivers 470.86 for x86_64
INFO     2021-12-24 07:12:16,550 [startup.check_driver:57]:GPU: NVIDIA GeForce RTX 3060
INFO     2021-12-24 07:12:16,550 [startup.check_driver:73]:GPU: 10DE:2503 196E:1377 (nvidia drivers)
DEBUG    2021-12-24 07:12:16,725 [lutriswindow.update_store:451]:Showing 25 games
DEBUG    2021-12-24 07:12:20,443 [application.show_window:259]:Showing window <class 'lutris.gui.config.preferences_dialog.PreferencesDialog'>{}
DEBUG    2021-12-24 07:12:26,667 [application.on_app_window_destroyed:276]:Removed window <class 'lutris.gui.config.preferences_dialog.PreferencesDialog'>{}
INFO     2021-12-24 07:12:28,505 [application.do_shutdown:631]:Shutting down Lutris

Hmm, using the master branch to repro produces less logging!
```


### System Information

```shell
[System]
OS:              Pop!_OS 21.10 impish
Arch:            x86_64
Kernel:          5.15.8-76051508-generic
Desktop:         GNOME
Display Server:  x11

[CPU]
Vendor:          AuthenticAMD
Model:           AMD Ryzen 7 5800X 8-Core Processor
Physical cores:  8
Logical cores:   16

[Memory]
RAM:             31.4 GB
Swap:            0.0 GB

[Graphics]
Vendor:          NVIDIA Corporation
OpenGL Renderer: NVIDIA GeForce RTX 3060/PCIe/SSE2
OpenGL Version:  4.6.0 NVIDIA 470.86
OpenGL Core:     4.6.0 NVIDIA 470.86
OpenGL ES:       OpenGL ES 3.2 NVIDIA 470.86
Vulkan:          Supported
```


### Media (optional)

![Screenshot from 2021-12-24 07-06-15](https://user-images.githubusercontent.com/6507403/147351426-da379253-2415-47bf-8ca3-711c33b63236.png)


### Checklist:

- [X] I'm not asking for support with a game or the wine runner.
- [X] I have followed the above mentioned guides and have all the graphics and wine dependencies installed.
- [X] I have checked for existing issues that describe my problem prior to opening this one.
- [X] I understand that improperly formatted bug reports may be closed without explanation.


Discussion:
From my understanding, the configure button is exposed to allow users to add custom executable to runners. 
Would that not be after you install them?

If you actually want to configure-then-install, then this PR is backwards: we should never hide the configuration button, rather than hiding it more.
Nope, it allows users to use either their distros executables, or their own compiled ones without the need of installing Lutris' runners.
Hmm. I guess I should work up a PR that does it the other way then.

Resolving patch:
diff --git a/lutris/gui/config/runner_box.py b/lutris/gui/config/runner_box.py
--- a/lutris/gui/config/runner_box.py
+++ b/lutris/gui/config/runner_box.py
@@ -126,13 +126,11 @@ def on_remove_clicked(self, widget):
     def on_runner_installed(self, widget):
         """Called after the runnner is installed"""
         self.runner_label_box.set_sensitive(True)
-        self.configure_button.show()
         self.action_alignment.get_children()[0].destroy()
         self.action_alignment.add(self.get_action_button())
 
     def on_runner_removed(self, widget):
         """Called after the runner is removed"""
         self.runner_label_box.set_sensitive(False)
-        self.configure_button.hide()
         self.action_alignment.get_children()[0].destroy()
         self.action_alignment.add(self.get_action_button())


Test patch: