qt: Add Create Unsigned button to SendConfirmationDialog #18789

pull achow101 wants to merge 2 commits into bitcoin:master from achow101:create-unsigned-sendconfdialog changing 7 files +81 −27
  1. achow101 commented at 9:03 pm on April 27, 2020: member

    Instead of having different buttons or changing button behavior for making a PSBT, just have SendConfirmationDialog return whether the user wants a PSBT or a broadcasted transaction. Since this dialog is used by both the bumpFeeAction and the SendCoinsDialog, changes to both to support the different behavior is needed. They will check the return value of the SendConfirmationDialog for whether a PSBT needs to be created instead of checking whether private keys are disabled.

    Strings used in this dialog are being slightly modified to work with both private keys enabled and disabled wallets.

    Supersedes #18656 and #18655

  2. achow101 commented at 9:08 pm on April 27, 2020: member
    @luke-jr suggested that such a button should be behind an expert mode thing but I’m not sure how to do that. It’s not clear to me how that would look in the GUI. One thought I had was to have something like an “advanced options” box that could be hidden, but I don’t know enough about Qt to implement such a thing.
  3. DrahtBot added the label GUI on Apr 27, 2020
  4. DrahtBot commented at 11:02 pm on April 27, 2020: member

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #21576 (rpc, gui: bumpfee signer support by Sjors)
    • #15936 (Unify bitcoin-qt and bitcoind persistent settings by ryanofsky)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  5. instagibbs commented at 5:16 pm on April 28, 2020: member
    Definitely an improvement from prior PRs. Have you looked at Enable coin control features in the options menu? I tend to agree with Luke here in that for a basic user it’s still too much clutter and could confuse them into thinking they’ve sent when they have not so that might be a place to put that option if you can figure it out. Maybe the button could also automagically show up if and only if it’s a no privkey wallet(or instructs the user to set the option?).
  6. Sjors commented at 6:50 pm on April 28, 2020: member

    This is very scary:

    I don’t think this model is a good place for this. It’s main goal is to allow the user to check their transaction, not to make new decisions.

    I think the current behaviour of showing “the right” button is good enough for now. Under the hood it could be separate buttons of course, I don’t care too deeply.

    I would prefer to add an option like “Create PSBT instead of sending transaction” in the Expert settings:

    This preference can later be stored in the wallet payload (so it becomes a per-wallet preference rather than global). See also “wallet config options” in #13044.

  7. achow101 commented at 7:25 pm on April 28, 2020: member

    I don’t think this model is a good place for this. It’s main goal is to allow the user to check their transaction, not to make new decisions.

    I don’t see how making new decisions is mutually exclusive with checking the transaction. Users are still checking the transaction.

    I think the current behaviour of showing “the right” button is good enough for now. Under the hood it could be separate buttons of course, I don’t care too deeply.

    The whole point of this is to move away from having private keys disabled change what buttons do. I disagree that showing “the right button” is a good design decision.

  8. achow101 commented at 8:19 pm on April 28, 2020: member
    I’ve added a checkbox in the options to enable/disable showing the Create Unsigned button. The button will be shown for privateKeysDisabled too.
  9. Sjors commented at 7:58 am on April 29, 2020: member

    Thanks for adding the setting.

    For watch-only wallets, the send screen still says Create Unsigned:

    That should be Send for consistency. But that could be confusing; a user might know they need a PSBT, but they only see a “Send” button.

    So I think your original approach of adding the Create Unsigned button in the Send screen (and the extra menu option for bump fee) was better, at least when combined with the setting you added. That way:

    • nothing changes for new users with a default wallet with private keys
    • for watch-only wallets by default users will see a disabled Send button and a Create PSBT
    • with the setting enabled, users with a private key wallet will see both buttons
  10. achow101 commented at 4:41 pm on April 29, 2020: member

    That should be Send for consistency. But that could be confusing; a user might know they need a PSBT, but they only see a “Send” button.

    That could be changed to say “Create”. I think “Create” is broad enough to imply “make and send” and “make unsigned”.

    So I think your original approach of adding the Create Unsigned button in the Send screen (and the extra menu option for bump fee) was better, at least when combined with the setting you added. That way:

    The whole point of this PR is because that may confuse users. I also like this approach as it is simpler.

  11. DrahtBot added the label Needs rebase on May 11, 2020
  12. achow101 force-pushed on May 12, 2020
  13. DrahtBot removed the label Needs rebase on May 12, 2020
  14. in src/qt/forms/optionsdialog.ui:232 in dcf43d6981 outdated
    225@@ -226,6 +226,13 @@
    226             </property>
    227            </widget>
    228           </item>
    229+          <item>
    230+           <widget class="QCheckBox" name="m_enable_create_unsigned">
    231+            <property name="text">
    232+             <string>Enable Create Unsigned button</string>
    


    luke-jr commented at 10:11 pm on May 18, 2020:
    Maybe this should be a more general “Enable Advanced PSBT Controls”?

    achow101 commented at 8:01 pm on May 19, 2020:
    Done
  15. in src/qt/optionsmodel.cpp:83 in dcf43d6981 outdated
    79@@ -80,6 +80,11 @@ void OptionsModel::Init(bool resetSettings)
    80         settings.setValue("fCoinControlFeatures", false);
    81     fCoinControlFeatures = settings.value("fCoinControlFeatures", false).toBool();
    82 
    83+    if (!settings.contains("m_make_unsigned_button")) {
    


    luke-jr commented at 10:12 pm on May 18, 2020:
    I’m not sure if we have a standard naming schema for QSettings at this point, but m_ seems wrong at least? (Since they’re typeless, keeping the hungarian notation makes sense…)

    achow101 commented at 8:01 pm on May 19, 2020:
    Done
  16. in src/qt/sendcoinsdialog.cpp:316 in dcf43d6981 outdated
    320-        question_string.append(tr("Please, review your transaction."));
    321+    if (model->getOptionsModel()->getMakeUnsignedButton() || model->wallet().privateKeysDisabled()) {
    322+        question_string.append(tr("Please review your transaction.<br/>The <b>Create Unsigned</b> button can be used to produce a Partially Signed Bitcoin Transaction (PSBT) which can be saved or copied and then signed with a PSBT-compatible wallet (e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.)").arg(PACKAGE_NAME));
    323+    }
    324+    if (!model->wallet().privateKeysDisabled()) {
    325+        question_string.append(tr("<br/>The <b>Send</b> button will create, sign, and broadcast this transaction."));
    


    luke-jr commented at 10:16 pm on May 18, 2020:
    The new prompt sounds too complicated for normal users…

    achow101 commented at 8:01 pm on May 19, 2020:
    I’ve reverted it back to the original prompt with a slight modification
  17. in src/qt/sendcoinsdialog.cpp:384 in dcf43d6981 outdated
    382+    const QString confirmation = tr("Confirm send coins");
    383+    const QString confirmButtonText = tr("Send");
    384+    const QString psbt_button_text = tr("Create Unsigned");
    385+
    386+    // Show the Create Unsigned button if set in the options or if private keys are disabled.
    387+    bool show_unsigned_button = model->getOptionsModel()->getMakeUnsignedButton() || model->wallet().privateKeysDisabled();
    


    luke-jr commented at 10:16 pm on May 18, 2020:
    Can we move this up to have the || only done once?

    achow101 commented at 8:01 pm on May 19, 2020:
    It is though.
  18. in src/qt/sendcoinsdialog.cpp:1005 in dcf43d6981 outdated
    1006+void SendConfirmationDialog::updateButtons()
    1007 {
    1008     if(secDelay > 0)
    1009     {
    1010         yesButton->setEnabled(false);
    1011         yesButton->setText(confirmButtonText + " (" + QString::number(secDelay) + ")");
    


    luke-jr commented at 10:19 pm on May 18, 2020:
    We shouldn’t count down if we’re leaving it disabled…

    achow101 commented at 8:11 pm on May 19, 2020:
    Done
  19. in src/qt/sendcoinsdialog.cpp:1091 in dcf43d6981 outdated
    1009     {
    1010         yesButton->setEnabled(false);
    1011         yesButton->setText(confirmButtonText + " (" + QString::number(secDelay) + ")");
    1012+        if (m_psbt_button) {
    1013+            m_psbt_button->setEnabled(false);
    1014+            m_psbt_button->setText(m_psbt_button_text + " (" + QString::number(secDelay) + ")");
    


    luke-jr commented at 10:19 pm on May 18, 2020:
    Seems harmless to countdown unconditionally here.

    achow101 commented at 7:53 pm on May 19, 2020:
    m_psbt_button is nullptr when it isn’t being shown.
  20. luke-jr changes_requested
  21. achow101 force-pushed on May 19, 2020
  22. achow101 force-pushed on May 19, 2020
  23. in src/qt/sendcoinsdialog.cpp:314 in fc2d0a98b2 outdated
    315     question_string.append("<br /><span style='font-size:10pt;'>");
    316+    question_string.append(tr("Do you want to create this transaction?"));
    317     if (model->wallet().privateKeysDisabled()) {
    318         question_string.append(tr("Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    319+    } else if (model->getOptionsModel()->getEnablePSBTControls()) {
    320+        question_string.append(tr("Please, review your transaction. You can create and send this or transaction. Or you can create a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet. Or you can ").arg(PACKAGE_NAME));
    


    luke-jr commented at 5:07 pm on May 30, 2020:
    PSBTs aren’t Bitcoin Core specific, though, so PACKAGE_NAME seems to be the wrong substitution to use here?

    luke-jr commented at 5:08 pm on May 30, 2020:
    “Or you can “…what?

    achow101 commented at 3:51 pm on June 8, 2020:
    Oops, removed.

    achow101 commented at 3:51 pm on June 8, 2020:
    This is just the same as the string above.
  24. achow101 force-pushed on Jun 8, 2020
  25. jarolrod commented at 7:18 pm on December 4, 2020: member

    Testing 768ef5c, does not compile on Arch Linux (kernel 5.8.16) with Qt 5.15.2. Failures are related to QPainterPath found in qt/trafficgraphwidget.cpp Below are the failures:

     0qt/trafficgraphwidget.cpp:55:9: error: invalid use of incomplete type ‘class QPainterPath’
     1   55 |         path.moveTo(x, YMARGIN + h);
     2      |         ^~~~
     3
     4qt/trafficgraphwidget.cpp:59:13: error: invalid use of incomplete type ‘class QPainterPath’
     5   59 |             path.lineTo(x, y);
     6      |             ^~~~
     7qt/trafficgraphwidget.cpp:61:9: error: invalid use of incomplete type ‘class QPainterPath’
     8   61 |         path.lineTo(x, YMARGIN + h);
     9      |         ^~~~
    10qt/trafficgraphwidget.cpp:109:22: error: aggregate ‘QPainterPath p’ has incomplete type and cannot be define
    11  109 |         QPainterPath p;
    12      |                      ^
    13qt/trafficgraphwidget.cpp:116:22: error: aggregate ‘QPainterPath p’ has incomplete type and cannot be define
    14  116 |         QPainterPath p;
    15      |                      ^
    
  26. luke-jr commented at 7:30 pm on December 4, 2020: member
    @jarolrod You probably need to merge with master… That’s an old issue unrelated to this PR
  27. jarolrod commented at 7:53 pm on December 4, 2020: member

    @jarolrod You probably need to merge with master… That’s an old issue unrelated to this PR

    Thanks! Wasn’t aware, now I know. False alarm, I merged and 768ef5c compiles.

  28. DrahtBot added the label Needs rebase on Jan 13, 2021
  29. achow101 force-pushed on Jan 13, 2021
  30. DrahtBot removed the label Needs rebase on Jan 13, 2021
  31. DrahtBot added the label Needs rebase on Jan 26, 2021
  32. achow101 force-pushed on Jan 26, 2021
  33. DrahtBot removed the label Needs rebase on Jan 26, 2021
  34. DrahtBot added the label Needs rebase on Jun 9, 2021
  35. achow101 force-pushed on Jun 9, 2021
  36. DrahtBot removed the label Needs rebase on Jun 9, 2021
  37. in src/qt/sendcoinsdialog.cpp:330 in 72e023968b outdated
    327-    } else {
    328-        question_string.append(tr("Are you sure you want to send?"));
    329-    }
    330-
    331     question_string.append("<br /><span style='font-size:10pt;'>");
    332+    question_string.append(tr("Do you want to create this transaction?"));
    


    jarolrod commented at 1:03 am on June 10, 2021:
    0+    /*: Message displayed when attempting to create a transaction. Cautionary text
    1+        to prompt the user to verify that the displayed details represent the transaction
    2+        the user intends to create. */     
    3     question_string.append(tr("Do you want to create this transaction?"));
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  38. in src/qt/walletmodel.cpp:507 in 72e023968b outdated
    503@@ -506,12 +504,15 @@ bool WalletModel::bumpFee(uint256 hash, uint256& new_hash)
    504         questionString.append(tr("Warning: This may pay the additional fee by reducing change outputs or adding inputs, when necessary. It may add a new change output if one does not already exist. These changes may potentially leak privacy."));
    505     }
    506 
    507-    SendConfirmationDialog confirmationDialog(tr("Confirm fee bump"), questionString);
    508+    // Show the Craete Unsigned button if the option is set or private keys are disabled
    


    jarolrod commented at 1:14 am on June 10, 2021:
    0    // Show the "Create Unsigned" button if the option is set or private keys are disabled
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  39. in src/qt/sendcoinsdialog.cpp:330 in 72e023968b outdated
    331     question_string.append("<br /><span style='font-size:10pt;'>");
    332+    question_string.append(tr("Do you want to create this transaction?"));
    333     if (model->wallet().privateKeysDisabled() && !model->wallet().hasExternalSigner()) {
    334         question_string.append(tr("Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    335+    } else if (model->getOptionsModel()->getEnablePSBTControls()) {
    336+        question_string.append(tr("Please, review your transaction. You can create and send this or transaction. Or you can create a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    


    jarolrod commented at 6:58 am on June 14, 2021:
    0        question_string.append(tr("Please, review your transaction. You can create and send this transaction or create a Partially Signed Bitcoin Transaction (PSBT), which you can save or copy and then sign with e.g. an offline %1 wallet or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    

    jarolrod commented at 7:40 am on June 14, 2021:

    Add translator comment (using this revised text:)

    0+    /*: Text to inform a user attempting to create a transaction of their current options.
    1+        At this stage, a user can send their transaction or create a PSBT.
    2+        This string is displayed when private keys and PSBT controls are enabled. */
    3     question_string.append(tr("Please, review your transaction. You can create and send this or transaction. Or you can create a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  40. in src/qt/sendcoinsdialog.cpp:335 in 72e023968b outdated
    329-    }
    330-
    331     question_string.append("<br /><span style='font-size:10pt;'>");
    332+    question_string.append(tr("Do you want to create this transaction?"));
    333     if (model->wallet().privateKeysDisabled() && !model->wallet().hasExternalSigner()) {
    334         question_string.append(tr("Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    


    jarolrod commented at 7:46 am on June 14, 2021:

    while here, add a translator comment for this string

    0+    /*: Text to inform a user attempting to create a transaction of their current options.
    1+        At this stage, a user only create a PSBT. This string is displayed when private keys 
    2+        are disabled and an external signer is available. */
    3     question_string.append(tr("Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  41. in src/qt/walletmodel.cpp:485 in 72e023968b outdated
    479@@ -480,10 +480,8 @@ bool WalletModel::bumpFee(uint256 hash, uint256& new_hash)
    480         return false;
    481     }
    482 
    483-    const bool create_psbt = m_wallet->privateKeysDisabled();
    484-
    485     // allow a user based fee verification
    486-    QString questionString = create_psbt ? tr("Do you want to draft a transaction with fee increase?") : tr("Do you want to increase the fee?");
    487+    QString questionString = tr("Do you want to increase the fee?");
    


    jarolrod commented at 7:54 am on June 14, 2021:
    0+    /*: Ask a user if they would like to manually increase the fee of a transaction 
    1+        they are trying to create. */
    2     QString questionString = tr("Do you want to increase the fee?");
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  42. in src/qt/sendcoinsdialog.cpp:343 in 72e023968b outdated
    333     if (model->wallet().privateKeysDisabled() && !model->wallet().hasExternalSigner()) {
    334         question_string.append(tr("Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    335+    } else if (model->getOptionsModel()->getEnablePSBTControls()) {
    336+        question_string.append(tr("Please, review your transaction. You can create and send this or transaction. Or you can create a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    337     } else {
    338         question_string.append(tr("Please, review your transaction."));
    


    jarolrod commented at 8:22 am on June 14, 2021:

    while here, add a translator comment for this string

    0+    /*: Text to prompt user to review the details of the transaction
    1+        they are attempting to send. */
    2     question_string.append(tr("Please, review your transaction."));
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  43. in src/qt/walletmodel.cpp:510 in 72e023968b outdated
    503@@ -506,12 +504,15 @@ bool WalletModel::bumpFee(uint256 hash, uint256& new_hash)
    504         questionString.append(tr("Warning: This may pay the additional fee by reducing change outputs or adding inputs, when necessary. It may add a new change output if one does not already exist. These changes may potentially leak privacy."));
    505     }
    506 
    507-    SendConfirmationDialog confirmationDialog(tr("Confirm fee bump"), questionString);
    508+    // Show the Craete Unsigned button if the option is set or private keys are disabled
    509+    bool show_unsigned_button = getOptionsModel()->getEnablePSBTControls() || m_wallet->privateKeysDisabled();
    510+
    511+    SendConfirmationDialog confirmationDialog(tr("Confirm fee bump"), questionString, "", "", SEND_CONFIRM_DELAY, "Send", !m_wallet->privateKeysDisabled(), "Create Unsigned", show_unsigned_button, nullptr);
    


    jarolrod commented at 8:23 am on June 14, 2021:

    shouldn’t "Send" and "Create Unsigned" be translatable?

    0    SendConfirmationDialog confirmationDialog(tr("Confirm fee bump"), questionString, "", "", SEND_CONFIRM_DELAY, tr("Send"), !m_wallet->privateKeysDisabled(), tr("Create Unsigned"), show_unsigned_button, nullptr);
    

    achow101 commented at 11:15 pm on August 17, 2021:
    Done
  44. jarolrod commented at 8:27 am on June 14, 2021: member

    Concept ACK

    Will think about the changes over and give this another sweep through tomorrow. Some feedback for now. Mainly translator comments.

  45. Sjors commented at 9:23 am on June 16, 2021: member

    tACK 72e0239

    For the default wallet not much changes in the interface, unless the user opts into the advanced PSBT setting. So that’s good.

    Although “Increase fee” can correctly create a PSBT, if you actually broadcast it the transaction list tab is confusing, because it doesn’t mark the original as replaced (until it’s confirmed). But that’s a separate bug.

  46. DrahtBot added the label Needs rebase on Aug 12, 2021
  47. achow101 force-pushed on Aug 17, 2021
  48. in src/qt/sendcoinsdialog.cpp:329 in 6e74c015c3 outdated
    330-        question_string.append(tr("Are you sure you want to send?"));
    331-    }
    332-
    333     question_string.append("<br /><span style='font-size:10pt;'>");
    334+    /*: Message displayed when attempting to create a transaction. Cautionary text to prompt the user to verify
    335+     * that the displayed transaction details represent the transaction the user intends to create */
    


    jarolrod commented at 11:46 pm on August 17, 2021:

    These are meant to be translator comments, i can understand the confusion with doxygen comment syntax 🤗

    These extra * will be displayed to the translator and will be confusing:

    0<message>
    1        <location line="-5"/>
    2        <source>Do you want to create this transaction?</source>
    3        <extracomment>Message displayed when attempting to create a transaction. Cautionary text to prompt the user to verify * that the displayed transaction details represent the transaction the user intends to create</extracomment>
    4        <translation type="unfinished"></translation>
    5</message>
    

    Remove these also in the translator comments introduced on R332 and R337

    It’s also important that they end in a period or full-stop.

    This and the other translator comment should look exactly like the following:

    0+    /*: Message displayed when attempting to create a transaction. Cautionary text
    1+        to prompt the user to verify that the displayed details represent the transaction
    2+        the user intends to create. */     
    3     question_string.append(tr("Do you want to create this transaction?"));
    
    0     that the displayed transaction details represent the transaction the user intends to create. */
    

    achow101 commented at 5:58 pm on August 18, 2021:
    Done
  49. DrahtBot removed the label Needs rebase on Aug 18, 2021
  50. in src/qt/forms/optionsdialog.ui:256 in 6e74c015c3 outdated
    235@@ -236,6 +236,13 @@
    236             </property>
    237            </widget>
    238           </item>
    239+          <item>
    240+           <widget class="QCheckBox" name="m_enable_psbt_controls">
    


    jarolrod commented at 1:05 am on August 18, 2021:

    add a tooltip?

    0@@ -238,6 +238,9 @@
    1           </item>
    2           <item>
    3            <widget class="QCheckBox" name="m_enable_psbt_controls">
    4+            <property name="toolTip">
    5+             <string extracomment="Tooltip text for options window setting that enables advanced PSBT controls.">Whether to show advanced PSBT controls or not.</string>
    6+            </property>
    7             <property name="text">
    8              <string>Enable Advanced PSBT Controls</string>
    9             </property>
    

    achow101 commented at 5:58 pm on August 18, 2021:
    Done
  51. in src/qt/forms/optionsdialog.ui:242 in 6e74c015c3 outdated
    235@@ -236,6 +236,13 @@
    236             </property>
    237            </widget>
    238           </item>
    239+          <item>
    240+           <widget class="QCheckBox" name="m_enable_psbt_controls">
    241+            <property name="text">
    242+             <string>Enable Advanced PSBT Controls</string>
    


    jarolrod commented at 1:11 am on August 18, 2021:

    The capitalization here is different from the other options menu settings. Also, we should add a mnemonic shortcut.

    While here, we can add a translator comment to this *.ui string by using the extracomment field.

    0             <string extracomment="An options window setting to enable advanced PSBT controls.">Enable advanced &amp;PSBT controls</string>
    

    achow101 commented at 5:58 pm on August 18, 2021:
    Done
  52. in src/qt/sendcoinsdialog.cpp:340 in 6e74c015c3 outdated
    341         question_string.append(tr("Please, review your transaction proposal. This will produce a Partially Signed Bitcoin Transaction (PSBT) which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    342+    } else if (model->getOptionsModel()->getEnablePSBTControls()) {
    343+        /*: Text to inform a user attempting to create a transaction of their current options. At this stage,
    344+         * a user can send their transaction or create a PSBT. This string is displayed when both private keys
    345+         * and PSBT controls are enabled */
    346+        question_string.append(tr("Please, review your transaction. You can create and send this transaction or you can create a Partially Signed Bitcoin Transaction (PSBT), which you can save or copy and then sign with e.g. an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    


    jarolrod commented at 2:43 pm on August 18, 2021:
    0        question_string.append(tr("Please, review your transaction. You can create and send this transaction or create a Partially Signed Bitcoin Transaction (PSBT), which you can save or copy and then sign with, e.g., an offline %1 wallet, or a PSBT-compatible hardware wallet.").arg(PACKAGE_NAME));
    

    achow101 commented at 5:58 pm on August 18, 2021:
    Done
  53. achow101 force-pushed on Aug 18, 2021
  54. DrahtBot added the label Needs rebase on Sep 29, 2021
  55. qt: Add Create Unsigned button to SendConfirmationDialog
    Instead of having different buttons or changing button behavior for
    making a PSBT, just have SendConfirmationDialog return whether the user
    wants a PSBT or a broadcasted transaction. Since this dialog is used
    by both the bumpFeeAction and the SendCoinsDialog, changes to both
    to support the different behavior is needed. They will check
    the return value of the SendConfirmationDialog for whether a PSBT
    needs to be created instead of checking whether private keys are
    disabled.
    
    Strings used in this dialog are being slightly modified to work with
    both private keys enabled and disabled wallets.
    cfc412ab29
  56. qt: hide Create Unsigned button behind an expert mode option 55c19f9191
  57. achow101 force-pushed on Sep 29, 2021
  58. DrahtBot removed the label Needs rebase on Sep 29, 2021
  59. DrahtBot commented at 9:57 am on September 30, 2021: member

    🐙 This pull request conflicts with the target branch and needs rebase.

    Want to unsubscribe from rebase notifications on this pull request? Just convert this pull request to a “draft”.

  60. DrahtBot added the label Needs rebase on Sep 30, 2021
  61. achow101 commented at 7:44 pm on September 30, 2021: member
  62. achow101 closed this on Sep 30, 2021

  63. hebasto referenced this in commit 2e01b69860 on Jan 9, 2022
  64. DrahtBot locked this on Oct 30, 2022

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-07-05 16:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me