Implements #16954 for the current functionality + #16944 (gui: create PSBT with watch-only wallet). This PR splits the send screen into three tabs, like a wizard.
This frees up UI real estate where we can add support for PSBT, hardware wallets and education.
I renamed SendCoinsDialog to SendCompose and SendConfirmationDialog to SendSignfor clarity, which ended up (trivially) touching lots of src/qt/locale/bitcoin_##.ts files. This is contained in two move-only commits.
Tab 1: Draft
<img width="926" alt="Schermafbeelding 2019-09-26 om 15 59 16" src="https://user-images.githubusercontent.com/10217/65695736-606d8b80-e078-11e9-84d9-fe2d37f932e8.png">
Same as the current send screen: enter destination, do coin selection, set fee etc. This can be split further in future PRs for a less cluttered experience, e.g. one tab for coin selection (if enabled), one for destination(s) and one for fees. Having a separate tab for fees also provides an entry point for RBF, which currently doesn't let the user pick an amount.
Tab 2: Sign
This asks to unlock the wallet if needed.
<img width="931" alt="Schermafbeelding 2019-09-26 om 16 14 42" src="https://user-images.githubusercontent.com/10217/65695992-c9ed9a00-e078-11e9-9ee7-4d60d0499049.png">
Display transaction details like the current popup does.
<img width="933" alt="Schermafbeelding 2019-09-26 om 15 59 35" src="https://user-images.githubusercontent.com/10217/65695773-6fecd480-e078-11e9-95fa-498f844c5eb1.png">
Edit jumps back to Draft. Send jumps to Finish, unless something goes wrong.
Bump fee jumps straight to this tab: <img width="855" alt="sign" src="https://user-images.githubusercontent.com/10217/65713022-89057d80-e098-11e9-80d5-0a2abdde0871.png">
For watch-only wallets it displays the same text as #16944.
Tab 3: Finish
<img width="932" alt="Schermafbeelding 2019-09-26 om 16 08 21" src="https://user-images.githubusercontent.com/10217/65695799-7b400000-e078-11e9-967a-7581f15ecdd5.png">
This is where the actual broadcast takes place, or where the PSBT is copied to the clipboard. In a followup we can add support for saving the PSBT to disk, or for copying a signed transaction hex to clipboard if the user wants to broadcast that elsewhere.
Bump fee shows both the previous and new transaction index: <img width="847" alt="sent" src="https://user-images.githubusercontent.com/10217/65713060-9c184d80-e098-11e9-879a-f10822d4ad2b.png">
The manual "Show" button has the nice side-effect of fixing #16875 / #16876 in two out of three places.
Todo:
- clean up WalletModelTransaction and CoinControl object passing mess
- restore test
Followups:
- add PSBT export to Sign tab (extract from gwillen's branch https://github.com/gwillen/bitcoin/tree/feature-offline-v2, i.e. redo #16944)
- add Load PSBT menu option, jump to Broadcast tab if complete, otherwise to Sign tab
- list connected hardware wallets in Sign tab (redo #16549
- split fee selection into its own tab
- allow custom RBF amounts: bump fee should jump to fee selection tab