qml: use backend sighash check and add user confirmation path
qt: use backend sighash check and add user confirmation path
qml: include get_warning_for_risk_of_burning_coins_as_fees test in txdetails
qt: add warning icon to sighash warning
add sighash and fee checks to wallet.sign_transaction, making all warnings fatal unless ignore_warnings is set to True
tests: test sign_transaction on both code paths with ignore_warnings True and False,
raise specific exceptions TransactionPotentiallyDangerousException and TransactionDangerousException
fixes https://github.com/spesmilo/electrum/issues/3315
The cause was that tracebacks look different whether stack items have source text available.
When using the pyinstaller windows binary, there is no source text available.
Example when running from source:
```
>>> a
Traceback (most recent call last):
File "...\electrum\gui\qt\console.py", line 256, in exec_command
result = eval(command, self.namespace, self.namespace)
File "<string>", line 1, in <module>
NameError: name 'a' is not defined
```
Example for pyinstaller windows binary:
```
>>> a
Traceback (most recent call last):
File "electrum\gui\qt\console.py", line 256, in exec_command
File "<string>", line 1, in <module>
NameError: name 'a' is not defined
```
gui/qt/rbf_dialog.py (old) lines 57-64 were implementing logic that should not be part of GUI code.
Case in point, gui/qml/qetxfinalizer.py (old) lines 511-513 duplicated half of that logic but not the other half.
That logic is now moved to wallet.get_bumpfee_strategies_for_tx().
More context: a user on irc got confused when using the qml gui. They were sending "max" and wanted to bump_fee.
The qml gui selected the "preserve_payment" strategy by default, using which there was no solution, and the user
did not notice that the strategy can be altered (via the "method" dropdown). The qt gui had logic to select
"decrease_payment" by default in such a case (which does find a solution to bump) but this logic was not
duplicated in the qml gui.
Instead of duplicating the logic, this commit moves it to shared lib code.
avoid overloading invoiceParser with new payment identifiers while potentially long-running
resolve/finalize steps are ongoing, show errors inresolve/finalize steps to user.
- split RequestForceClose and LocalForceClose options, as request force close is only available if connected.
- disable no close policy on dialog, as it locks the user in the dialog if no succesful close is initiated.
what this intended to do is keep the backing object QEChannelDetails alive until a result is obtained, to avoid
exceptions when emitting the result signal. this is now handled more robustly, the user can leave the dialog
without triggering exceptions later.
turns out that Qt.inputMethod.keyboardRectangle.height is not suitable for calculating the exact keyboard
dimensions in Qt coordinates. Instead, use Qt.inputMethod.keyboardRectangle.y transformed to Qt coordinates
using Screen.devicePixelRatio
Note: Qt.inputMethod.keyboardRectangle stop being updated after exiting FLAG_SECURE state
(e.g. in seed or master key entry pages)