fixes https://github.com/spesmilo/electrum/pull/9726/files#r2057787097 :
> The version of readlink installed on macOS does not support the -e flag:
> ```
> 💬 INFO: preparing electrum-locale.
> readlink: illegal option -- e
> usage: readlink [-fn] [file ...]
> ```
>
> On a mac you can install a version of readlink that argbash expects:
> Using homebrew, `brew install coreutils` will install `greadlink` which supports the `-e` flag.
I don't think we actually need to resolve symlinks here.
There are already some examples of similar usage with realpath vs grealpath. Let's just do that.
there is no available documentation on what this plugin does or how it
works, also the concept isn't well known. By adding some information in
the form of a help box the user can understand the concept of what this
plugin does and how it is used.
Adds validation and deduplication of the relay urls entered in the QT
settings dialog. This is supposed to prevent malformed or duplicated
relay entries.
Also resets the relays to the default value if no (valid) url
is entered. This prevents the user from getting stuck without relays
(otherwise the user would have to research for relay urls manually if
they don't know any).
This config var should have never been saved to the config file, therefore it is safe to remove
instead of setting to '' to overwrite any existing value.
If some dialogs are open while an exception was raised the input of
Exception_Window is blocked and the user cannot click the button to
submit the issue report. Only if the other dialog is closed
Exception_Window starts responding. By setting the modality of
`Exception_Windows` to `ApplicationModal` the `Exception_Window` will
get the 'highest priority' and accepts input even if other dialogs are
open.
`suggest_node_channel_open()` did suggest peers with onion hostname,
even if the caller has no proxy enabled. This causes channel openings in
the gui to sometimes just not work and show a `CancelledError()` becaues
it wasn't able to connect to the peer.
Now only clearnet peers will get recommended, as these will always work.
When reloading the windows, e.g. after enabling or disabling a plugin,
the plugins dialog vanished behind the main window. By using a
Timer its possible to bring the Dialog back in front after the windows
have reloaded.
download_plugin_dialog tried to run the zip download with
self.window.run_coroutine_dialog, but self has no window,
instanciating a RunCoroutineDialog directly fixes this.
If the plugin file got already deleted while being in the installation
dialog, trying to delete it again will raise an exception.
This is fixed by catching the exception.
If the user tries to install an external plugin that is already
installed, and then closes the PluginDialog, the PluginsDialog will
get into a bad state, throwing an exeption when opening it. This
happens because the add_plugin_dialog deletes the zipfile if the
user closes or cancels the installation dialog.
This is fixed by checking if the plugin is already existing,
instead of trying to install an already existing plugin.